我正在尝试查看只有管理员才能查看的特定页面,但每次发出请求时都会收到错误消息。它似乎与我的安全上下文文件中的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>
我的数据库中的两个表是用户(用户名,电子邮件,已启用,密码)和权限(用户名,权限)。
有人可以建议我的错误是什么或如何解决它?
答案 0 :(得分:5)
默认情况下,弹簧添加了ROLE_前缀,因此将hasAnyRole('admin')
更改为hasAnyRole('ROLE_admin')
应修复错误,除非您有自定义实现。
参考:
答案 1 :(得分:0)
请确认当您以管理员身份登录时,您确实拥有管理员角色。
请参阅以下代码的输出:
Opportunity
在允许所有人的任何流程中。
这将只列出您登录用户的所有角色。
getCurrentUser().getAuthorities();