Spring安全性@secure不使用角色层次结构
我在spring security spring-securityConfig.xml
使用spring security中的角色层次结构
ROLE_ADMIN > ROLE_WORKFLOW ROLE_ADMIN > ROLE_ISBN_INSERTION ROLE_ADMIN > ROLE_PERMISSION_UPDATE ROLE_ADMIN > ROLE_ASSIGNMENT ROLE_ADMIN > ROLE_CALIBRATION ${ldap.userDnPatterns}
在服务方法中,我使用@Secured({ "ROLE_PERMISSION_UPDATE"})
如果具有角色ROLE_ADMIN的用户登录到应用程序并尝试访问此安全方法,则它会抛出访问被拒绝的exception。
我找到了解决方案
在dispatcher-servlet.xml
添加它。 弹簧安全应该有不同的背景
加
contextConfigLocation WEB-INF/applicationContext.xml WEB-INF/dispatcher-servlet.xml
到你的web.xml并在applicationContext.xml
导入spring-security.xml
这样做的唯一目的是为spring安全性提供单独的上下文。
要应用基于方法的安全性来处理角色层次结构,请使用@PreAuthorize("SpEL")
代替@Secured({})
您只为DefaultWebSecurityExpressionHandler启用了roleHierarchy,它将对您的http请求起作用,但不对@Secured注释起作用。 也将它添加到DefaultMethodSecurityExpressionHandler