Spring安全hasRole()给出错误403 - 访问被拒绝

时间:2016-01-21 16:13:00

标签: java spring jsp spring-mvc spring-security

我正在尝试查看只有管理员才能查看的特定页面,但每次发出请求时都会收到错误消息。它似乎与我的安全上下文文件中的hasRole()一致。

错误只是说HTTP状态403 - 当我发出查看admin jsp页面的请求时,Access被拒绝

安全context.xml中:

<security:http use-expressions="true">
    <security:intercept-url pattern="/admin" access="hasAnyRole('admin')" />
    <security:form-login login-page="/login"
        authentication-failure-url="/login?error=true" />
    <security:logout logout-success-url="/loogedout" />
    <security:intercept-url pattern="/createoffer" access="isAuthenticated()" />
    <security:intercept-url pattern="/docreate" access="isAuthenticated()" />
    <security:intercept-url pattern="/offercreated" access="isAuthenticated()" />
    <security:intercept-url pattern="/" access="permitAll" />
    <security:intercept-url pattern="/loggedout" access="permitAll" />
    <security:intercept-url pattern="/newaccount" access="permitAll" />
    <security:intercept-url pattern="/createaccount" access="permitAll" />
    <security:intercept-url pattern="/accountcreated" access="permitAll" />
    <security:intercept-url pattern="/static/**" access="permitAll" />
    <security:intercept-url pattern="/login" access="permitAll" />
    <security:intercept-url pattern="/offers" access="permitAll" />
    <security:intercept-url pattern="/**" access="denyAll" />
</security:http>

我的数据库中的两个表是用户(用户名,电子邮件,已启用,密码)和权限(用户名,权限)。

有人可以建议我的错误是什么或如何解决它?

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:0)

请确认当您以管理员身份登录时,您确实拥有管理员角色。 请参阅以下代码的输出:
 Opportunity 在允许所有人的任何流程中。 这将只列出您登录用户的所有角色。

getCurrentUser().getAuthorities();