2017.2.7 开涛shiro教程-第六章-Realm及相关对象(四)
2017-02-08 16:23
435 查看
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398
根据下载的pdf学习。
第六章 Realm及相关对象(四)
1.Subject的代码结构
Subject是shiro的核心,基本所有身份验证、授权都是通过Subject完成的。
View Code
还有两个是:RunAs和多线程。代码里省掉了,因为当时我不知道是干嘛的。就打了...
2.Subject的使用
(1)Subject的创建
一般不用自己创建,直接通过SecurityUtils.getSubject() 获取即可。
(2)自定义创建Subject
创建完成后,再自己绑定到当前线程即可。
3.Subject的基本使用
(1)身份验证(login)
(2)授权(hasRole*/isPermitted*或 checkRole*/checkPermission*)
(3)将相应的数据存储到会话(Session)
(4)切换身份(RunAs)/多线程身份传播
(5)退出
根据下载的pdf学习。
第六章 Realm及相关对象(四)
1.Subject的代码结构
Subject是shiro的核心,基本所有身份验证、授权都是通过Subject完成的。
public interface Subject { //身份信息获取 Object getPrincipal(); //Primary Principal PrincipalCollection getPrincipals(); // PrincipalCollection //身份验证 void login(AuthenticationToken token) throws AuthenticationException; boolean isAuthenticated(); boolean isRemembered(); //角色授权认证 boolean hasRole(String roleIdentifier); boolean[] hasRoles(List<String> roleIdentifiers); boolean hasAllRoles(Collection<String> roleIdentifiers); void checkRole(String roleIdentifier) throws AuthorizationException; void checkRoles(Collection<String> roleIdentifiers) throws AuthorizationException; void checkRoles(String... roleIdentifiers) throws AuthorizationException; //权限授权验证 boolean isPermitted(String permission); boolean isPermitted(Permission permission); boolean[] isPermitted(String... permissions); boolean[] isPermitted(List<Permission> permissions); boolean isPermittedAll(String... permissions); boolean isPermittedAll(Collection<Permission> permissions); void checkPermission(String permission) throws AuthorizationException; void checkPermission(Permission permission) throws AuthorizationException; void checkPermissions(String... permissions) throws AuthorizationException; void checkPermissions(Collection<Permission> permissions) throws AuthorizationException; //会话 Session getSession(); //相当于 getSession(true) Session getSession(boolean create); //退出 void logout(); .... //其他略 }
View Code
还有两个是:RunAs和多线程。代码里省掉了,因为当时我不知道是干嘛的。就打了...
2.Subject的使用
(1)Subject的创建
一般不用自己创建,直接通过SecurityUtils.getSubject() 获取即可。
public static Subject getSubject() { Subject subject = ThreadContext.getSubject();// 先判定当前线程是否绑定了Subject if (subject == null) { subject = (new Subject.Builder()).buildSubject(); //如果没有绑定就通过Builder绑定,并且返回 ThreadContext.bind(subject); } return subject; }
(2)自定义创建Subject
创建完成后,再自己绑定到当前线程即可。
new Subject.Builder().principals(身份).authenticated(true/false).buildSubject();
3.Subject的基本使用
(1)身份验证(login)
(2)授权(hasRole*/isPermitted*或 checkRole*/checkPermission*)
(3)将相应的数据存储到会话(Session)
(4)切换身份(RunAs)/多线程身份传播
(5)退出
相关文章推荐
- 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(四)
- 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(二)
- 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(二)
- 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(三)
- 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(三)
- 2017.2.7 开涛shiro教程-第六章-Realm及相关对象(一)
- 第六章Shiro Realm及相关对象
- shiro中 subject.getPrincipal() getPrimaryPrincipal()及第六章 Realm及相关对象
- shiro 框架之Realm及相关对象
- 第六章 Realm及相关对象(四) AuthorizationInfo
- 第六章 Realm及相关对象——《跟我学Shiro》
- 第六章 Realm及相关对象——《跟我学Shiro》
- 第六章 Realm及相关对象(三) AuthenticationInfo
- 第六章 Realm及相关对象——《跟我学Shiro》
- 第六章 Realm及相关对象——《跟我学Shiro》[张开涛]
- 第六章 Realm及相关对象
- 第六章 Realm及相关对象(一) Realm
- 第六章 Realm及相关对象
- 第六章----- Realm及相关对象
- 第六章 Realm及相关对象(四) PrincipalCollection