前言:springboot整合springsecurity采用@Secured注解无法通过,配置以及权限设置都没有问题,用户具有此权限还是返回org.springframework.security.access.AccessDeniedException: 不允许访问异常
原因:翻看源码发现
SecurityExpressionRoot类中有如下方法
private static String getRoleWithDefaultPrefix(String defaultRolePrefix, String role) {
if (role == null) {
return role;
} else if (defaultRolePrefix != null && defaultRolePrefix.length() != 0) {
return role.startsWith(defaultRolePrefix) ? role : defaultRolePrefix + role;
} else {
return role;
}
}
而defaultRolePrefix属性声明:
private String defaultRolePrefix = "ROLE_";
解决:
第一种方式:把要授权的方法改为ROLE_开头,例如
@Secured("ROLE_SYSTEM_USER_VIEW")
@GetMapping()
public String user()
{
return prefix + "/user";
}
设置A

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



