热卖商品
新闻详情
Acegi Security -- Spring下最优秀的安全系统_cfhgcvb..._CSDN博客
来自 : CSDN技术社区
发布时间:2021-03-25
afterAclCollectionRead会在拦截的方法执行结束的时候执行。主要的作用就是在返回的List中挨个检查domainObject的操作权限 然后根据requirePermission来剔除不符合的domainObject。
4.3 使用RuleEngine设置的ACL规则
在SpringSide里使用了RuleEngine来设置ACL规则 具体规则见
bookstore-sample/resources/rules/drl
五 FAQ
5.1 FAQ
Q: 能否脱离Spring框架来使用Acegi?
A: 虽然Acegi 没有要求必须使用Spring Framework 但事实上Acegi很大程度上利用了Spring的IOC和AOP,很难脱离Spring的单独使用。
Q: Acegi有对xfire的支持吗?
A: 有,详见http://jira.codehaus.org/browse/XFIRE-389
Q: 为何无论怎么设置都返回到登陆页面无法成功登陆?
A: 检查登陆页面或登陆失败页面是否只有ROLE_ANONYMOUS权限
5.2 Acegi 补习班
要了解Acegi,首先要了解以下几个重要概念
Authentication
Authentication对象包含了principal, credentials 和 authorities(authorities要赋予给principal的),同时也可以包含一些附加的认证请求信息,如TCP/IP地址和Session id等。
SecurityContextHolder
SecurityContextHolder包含ThreadLocal私有属性用于存取SecurityContext, SecurityContext包含Authentication私有属性, 看以下一段程序
public void getSecurityContextInformations() {
SecurityContext sc SecurityContextHolder.getContext();
Authentication auth sc.getAuthentication();
Object principal auth.getPrincipal();
if (principal instanceof UserDetails) {
//用户密码
String password ((UserDetails) principal).getPassword();
//用户名称
String username ((UserDetails) principal).getUsername();
//用户权限
GrantedAuthority[] authorities ((UserDetails) principal).getAuthorities();
for (int i i authorities.length; i ) {
String authority authorities[i].getAuthority();
}
}
Object details auth.getDetails();
if (details instanceof WebAuthenticationDetails) {
//用户session id
String SessionId ((WebAuthenticationDetails) details).getSessionId();
}
}
AuthenticationManager
通过Providers验证在当前 ContextHolder中的Authentication对象是否合法。
AccessDecissionManager
经过投票机制来审批是否批准操作
RunAsManager
当执行某个操作时,RunAsManager可选择性地替换Authentication对象
Interceptors
拦截器(如FilterSecurityInterceptor,JoinPoint,MethodSecurityInterceptor等)用于协调授权,认证等操作
CREATE TABLE acl_object_identity (
id IDENTITY NULL ,
object_identity VARCHAR_IGNORECASE( NULL ,
parent_object INTEGER ,
acl_class VARCHAR_IGNORECASE( NULL ,
CONSTRAINT unique_object_identity UNIQUE (object_identity),
FOREIGN (parent_object) REFERENCES acl_object_identity(id)
);
CREATE TABLE acl_permission (
id IDENTITY NULL ,
acl_object_identity INTEGER NULL ,
recipient VARCHAR_IGNORECASE( NULL ,
mask INTEGER NULL ,
CONSTRAINT unique_recipient UNIQUE (acl_object_identity, recipient),
FOREIGN (acl_object_identity) REFERENCES acl_object_identity(id)
);
再分享一下我老师大神的人工智能教程吧。零基础 通俗易懂 风趣幽默 还带黄段子 希望你也加入到我们人工智能的队伍中来 https://blog.csdn.net/jiangjunshow
本文链接: http://acegi0.immuno-online.com/view-724509.html
发布于 : 2021-03-25
阅读(0)
最新动态
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
公司介绍
品牌分类
联络我们