
Spring Security ACL
Spring Security ACL 默认提供了 AclEntryAfterInvocationProvider ,使用Acl.isGranted(Permission[] permission, Sid[] sids, boolean administrativeMode) 来判断是否有权限访问。
但是比较通用的还是使用默认的GlobalMethodSecurityConfiguration 中定义的注册了ExpressionBasedPostInvocationAdvice的PostInvocationAdviceProvider它会去读取注解来判断。
他们是@PreAuthorize, @PreFilter, @PostAuthorize, @PostFilter
特殊变量的用法
@PreAuthorize(“#contact.name == authentication.name”) @PostAuthorize(“hasPermission(returnObject, ‘read’) ”) @PostFilter(“hasPermission(filterObject, ‘read’) or hasPermission(filterObject, ‘admin’)“)
hasPermission表达式专门用于ACL判断,它依赖于PermissionEvaluator,ACL模块对应的是AclPermissionEvaluator。
java
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {@Overrideprotected MethodSecurityExpressionHandler createExpressionHandler() {DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();expressionHandler.setPermissionEvaluator(aclPermissionEvaluator());return expressionHandler;}……}
评论
新的评论
上一篇
关于HTTP的Content-Length头
Content-Length 实体的大小 Content-Length首部指示出报文实体主体的字节大小,这个大小是包含了所有内容编码的。比如对文本文件进行了gzip压缩的话,Content-Length首部就是压缩后的大小,而不是原始大小。 另外Content-Length首部…
下一篇
Spring多数据源与事务
多数据源 实际业务中经常会遇到需要访问多个数据库的情况,有些情况是表和数据库之间的关系是固定的,而有些情况同一张表会存在于多个数据库中。 CASE 1 针对第一种情况,通过Spring的配置就能完成,例如 CASE 2 第二种情况,则通过框架提供的 AbstractRoutin…
