Spring安全性 - 使用hasPermission保护方法请求

Aub*_*ine 0 security spring

常见用法是:

<intercept-url pattern="/**" access"ROLE_ADMIN" />
Run Code Online (Sandbox Code Playgroud)

有可能做这样的事情:

<intercept-url pattern="/**" access"hasPermission("addSomething1") /> 
Run Code Online (Sandbox Code Playgroud)

我没有在允许的下列出的安全表达式中看到hasPermission:

我们只有:

认证; denyAll; hasAnyRole(角色列表); hasIpAddress; isAnonymous()等

我只是猜测方法安全性是否允许"hasPermission",那么它也应该也适用于Web请求.

谢谢,

Pav*_*ral 5

是的,这是可能的.您只需切换到基于表达式的评估

 <security:http use-expressions="true">
Run Code Online (Sandbox Code Playgroud)

并提供PermissionEvaluator给你的表达式处理程序:

<security:expression-hanlder ref="webSecurityExpressionHandler" />

<bean id="webSecurityExpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler>
    <property name="permissionEvaluator" ref="aclPermissionEvaluator" />
</bean>
Run Code Online (Sandbox Code Playgroud)

当然你需要PermissionEvaluator实施.您可以自己编写,也可以使用spring-acl项目.