Jan*_*ner 1 authentication spring spring-security
我有拦截网址的配置
<security:http use-expressions="true" disable-url-rewriting="true">
<security:intercept-url pattern="/secure/admission/*" access="hasRole('ROLE_ADMISSIONER')" />
<security:intercept-url pattern="/secure/subdean/*" access="hasRole('ROLE_SUBDEAN')" />
<security:intercept-url pattern="/secure/referent/*" access="hasRole('ROLE_REFERENT')" />
<security:intercept-url pattern="/secure/index.xhtml" access="hasRole('ROLE_REFERENT, ROLE_SUBDEAN')" />
<security:intercept-url pattern="/secure/*" access="hasRole('ROLE_OMNI_ADMIN')" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />
Run Code Online (Sandbox Code Playgroud)
但是现在我有一个问题,就是可以访问我的应用程序的url,例如MY_APPLICATION/PririzMaven/secure/admin/updateRole.xhtml,角色为ROLE_ADMISSIONER,url ..../secure/subdean/*,具有相同的角色,所以...但它应该被禁止给这个用户.
你知道哪里可能有问题吗?
假设PririzMaven是应用程序的上下文路径,/secure/admin/updateRole.xhtml将与路径匹配/**,因此所有经过身份验证的用户都可以访问.你没有规则/secure/admin.另请注意,单个'*'与子路径不匹配.例如,您应该使用/secure/admin/**匹配此路径下的所有内容.
您还应该启用调试日志记录并检查规则的应用方式 - 您应该看到针对传入请求URL调用匹配器,并且将看到正在比较的内容以及要匹配的内容.
最后,值得添加<security:debug />到应用程序上下文文件的顶部,这将以更易于阅读的格式添加有关请求处理的其他有用的调试信息.
| 归档时间: |
|
| 查看次数: |
4000 次 |
| 最近记录: |