ank*_*oni 3 spring spring-security
我试图在spring安全性中配置安全注释.但我对此有疑问 -
....
<security:http auto-config="true" use-expressions="true">
....
Run Code Online (Sandbox Code Playgroud)
当我用的时候
@Secured("CUSTOM_ACCESS")
public String query();
Run Code Online (Sandbox Code Playgroud)
它不起作用.但我用
@PreAuthorize("hasRole('CUSTOM_ACCESS')")
public String query();
Run Code Online (Sandbox Code Playgroud)
它正常工作并应用相关的角色.这是否意味着@Secured注释不能与@PreAuthorize一起使用?
我也尝试过添加
<security:global-method-security secured-annotations="enabled" />
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
<security:global-method-security pre-post-annotations="enabled" />
Run Code Online (Sandbox Code Playgroud)
上面的配置工作正常.有任何想法吗?
首先,元素中的use-expressions设置<http>对方法安全注释没有影响.这些是使用global-method-security.
运用
<security:global-method-security pre-post-annotations="enabled" />
Run Code Online (Sandbox Code Playgroud)
将启用PreAuthorize及其相关注释.当您启用安全注释时,安全注释无效的原因是因为没有选民知道什么CUSTOM_ACCESS意思.在默认设置中,Spring Security RoleVoter仅使用以前缀开头的属性ROLE_.有关更多信息,请参阅此FAQ.
除了检查简单角色之外,选民还可以用于其他事情,因此他们通常需要某种方式来确定为方法配置的哪些属性适用于它们.基于表达式的注释与标准选民的运作方式不同.该hasRole表达式只是看起来名为权力分配给用户.
因此,如果您创建了一个AccessDecisionManagerfor方法安全性,并使用了一个AccessDecisionVoter使用您的CUSTOM_ACCESS属性,那么@Secured注释将产生效果.但是,既然你已经使用它,PostAuthorize你可能只想坚持下去.
| 归档时间: |
|
| 查看次数: |
9877 次 |
| 最近记录: |