基于角色的身份验证不起作用

时间:2013-06-03 01:08:13

标签: java java-ee struts2 spring-security

我在我的struts2应用程序上应用spring安全性我可以使用interceptor-url来提供对主URL的访问,但不能访问它们的子集。

例如,我需要授予具有客户角色的用户访问权限才能查看书籍,所以我使用了 以下

    <http auto-config="true" access-denied-page="/not.jsp" use-expressions="true">
      ....
    <intercept-url pattern="/Books/view*" access="hasRole('ROLE_CUSTOMER')"/>

所以我认为用户应该能够访问localhost:8888 / Books / view.action但它们没有,并且它将它们重定向到not.jsp页面(access-denied-page)

我已尝试过以下所有但未奏效

    <intercept-url pattern="/Books/view.action" access="hasRole('ROLE_CUSTOMER')"/>
    <intercept-url pattern="/Books/view**" access="hasRole('ROLE_CUSTOMER')"/>
    <intercept-url pattern="/Books/view.action*" access="hasRole('ROLE_CUSTOMER')"/>

唯一可行的方法是访问我不想要的所有操作(编辑,删除和查看)。

     <intercept-url pattern="/Books/*" access="hasRole('ROLE_CUSTOMER')" /> 

2 个答案:

答案 0 :(得分:1)

检查以前的映射。不要忘记,如果您在到达此行之前为同一个URL提供对其他角色的访问权限,则会拒绝ROLE_CUSTOMER访问该地址,因此请使用其他表达式来访问所有需要访问该URL的角色。一次。

答案 1 :(得分:0)

正则表达式“*”表示任何短语。所以我能想到的是你没有任何URL模式/书籍/视图或者在该单词后面有更多字符。另外,正则表达式“/ Books / view * ”和“/ Books / view ”没有任何不同。他们是一样的。

但是“/ Books / *”这种URL模式与其他模式不同。它匹配任何URL模式请求/ Books / level上的资源。

我能说的是用你的网址模式重新检查。不禁知道他们。