Spring security 具有不同角色的Spring安全url拦截

Spring security 具有不同角色的Spring安全url拦截,spring-security,Spring Security,我们的应用程序是用spring security实现的,我使用以下语法进行基于url的角色访问 例如,下面的一个条目允许url具有“schoolspecificassessment”和角色admin security:intercept-url pattern="/schoolspecificassessment" access="hasAnyRole('admin')" /> 问题是, 如果我从管理员处注销并以普通用户身份登录,我将无法访问包含“学校特定评估”的url。但即使是普通用户

我们的应用程序是用spring security实现的,我使用以下语法进行基于url的角色访问

例如,下面的一个条目允许url具有“schoolspecificassessment”和角色admin

security:intercept-url pattern="/schoolspecificassessment" access="hasAnyRole('admin')" />
问题是, 如果我从管理员处注销并以普通用户身份登录,我将无法访问包含“学校特定评估”的url。但即使是普通用户也可以访问

如果我重新启动Jboss服务器,它会给普通用户发送未经授权的消息

我在注销时做以下事情

session.clear();
SecurityContextHolder.getContext().setAuthentication(null); 
SecurityContextHolder.clearContext();
但我觉得还是有一些会话被缓存在服务器级别。我不知道如何解决这个问题。 我正在使用Jboss服务器AS 7.1

请在这个问题上帮助我

谢谢,
Sivaranjani D

您为什么要自己注销?无论如何,请尝试使用
session.invalidate()。我的会话是SessionAware对象的会话。所以我不能执行session.invalidate,因为它是一个映射。但是,我尝试了spring注销,如下所示。但我仍然有同样的问题。获取真实会话对象而不是映射并使其无效。感谢您的持续支持。我也尝试了session.invalidate()。仍然有些地方缓存正在发生,有些地方。服务器重新启动后,它工作正常。jboss上有类似会话持久性的东西吗?像往常一样,启用调试日志并检查日志。Spring安全性记录关于如何处理每个请求的详细信息,如果存在经过身份验证的会话和用户,这一点很明显。如果您看不到这一点,那么您需要看看其他地方——请求实际上是由SpringSecurity处理的吗?您的浏览器正在缓存页面吗?写问题时要更详细。例如,不要说“包含“学校特定评估”的url”,请给出准确的请求url。如果不完全匹配,也许您应该尝试“/school specific assessment*”?