1

我有我的拦截网址配置

<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()" />

但是现在我有一个问题,可以访问我的应用程序的 url,例如具有角色 ROLE_ADMISSIONER 的 MY_APPLICATION/PririzMaven/secure/admin/updateRole.xhtml,具有相同角色的 url ..../secure/subdean/* 和依此类推...但应该禁止该用户使用。

你知道哪里有问题吗?

4

1 回答 1

5

假设PririzMaven是您的应用程序的上下文路径,/secure/admin/updateRole.xhtml将与路径匹配/**,因此所有经过身份验证的用户都可以访问。你没有规则/secure/admin。另请注意,单个“*”不匹配子路径。例如,您应该使用/secure/admin/**来匹配此路径下的所有内容。

您还应该启用调试日志并检查规则是如何应用的 - 您应该看到匹配器被调用到传入的请求 URL,并将看到正在比较的内容和正在匹配的内容。

最后,值得<security:debug />在应用程序上下文文件的顶部添加,这将以更易于阅读的格式添加有关请求处理的其他有用的调试信息。

于 2012-05-15T20:20:32.507 回答