春季安全hasRole()给错误403 -
问题描述:
我想认为,只有管理员可以查看特定页面的访问被拒绝,但每次我提出请求时,我得到一个错误。它似乎与我的安全上下文文件中的hasRole()。春季安全hasRole()给错误403 -
错误只是说,HTTP状态403 - 当我提出要看到管理jsp页面
安全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>
我的两个在我的数据库表是用户(用户名,电子邮件,启用密码)和权限(用户名,权限)。
任何人都可以提出什么我的错误是什么或如何解决?
答
默认情况下弹簧添加ROLE_前缀如此更改hasAnyRole('admin')
到hasAnyRole('ROLE_admin')
应该修复错误,除非您有自定义实现。
编号:
答
请确认当你以管理员身份登录,您真的有admin角色。 请参阅出来放下面的代码:getCurrentUser().getAuthorities();
任何被允许所有的流 。 这将简单列出您登录用户拥有的所有角色。
public UserInfo getCurrentUser() {
UserInfo userInfo = null;
SecurityContext securityContext = SecurityContextHolder.getContext();
if (securityContext != null && null != securityContext.getAuthentication()) {
Object principal = securityContext.getAuthentication().getPrincipal();
if (UserInfo.class.isAssignableFrom(principal.getClass())) {
userInfo = (UserInfo) principal;
}
}
return userInfo;
}
你可以发布详细的错误信息,没有它不能帮你很多。 – OPK
@JasonZ道歉,我编辑了错误的帖子。 –
你是否以'admin'身份登录? – OPK