Shiro Subject详解
2022/7/30 6:23:51
本文主要是介绍Shiro Subject详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
转自:
http://www.java265.com/JavaCourse/202201/2168.html
Shiro Subject简介说明
Subject:是Shiro的认证授权组件 提供当前用户信息(角色 授权),然后进行登录,退出,权限验证等 我们常将一个Subject对象称之为一个用户
获取Subject
Subject subject = SecurityUtils.getSubject(); 使用SecurityUtils.getSubject()可以获得当前的Subject
subject主要接口
Subject login(Subject subject, AuthenticationToken authenticationToken) throws AuthenticationException; //登陆 void logout(Subject subject); //退出登陆 Subject createSubject(SubjectContext context); //获取subject
subject作用
获得Session对象
Session session = subject.getSession(); session.setAttribute( "key", "aValue" ); 注意事项: 1.此处的Session不是HttpSession,而是shiro为我们提供的session 2.此处的Session不依赖http服务器
获取当前登录的用户名
String currentUser = subject.getPrincipal().toString(); System.out.println("当前登录的用户是:"+currentUser);
验证当前用户的权限
//判断用户是否是拥有某种角色 boolean isRole = subject.hasRole( "admin" ); //是否拥有某种功能 boolean isPer = subject.isPermitted("java265User:run");
退出登录
//退出登录 subject.logout();
注解式授权
@RequiresAuthentication
要求当前Subject已经在session中验证通过(验证当前用户是否登录:subject.isAuthenticated() 结果为true)
@RequiresUser
验证用户是否被记忆
@RequiresGuest
用户没有登录认证或被记住过,验证是否是一个guest的请求,与@RequiresUser完全相反。换言之,RequiresUser == !RequiresGuest。此时subject.getPrincipal() 结果为null.
@RequiresPermissions
验证用户是否具有一个或多个权限,该注解将会经常在项目中使用,如果不满足条件则抛出AuthorizationException异常
@RequiresRoles
验证当前用户是否具有某角色,与验证权限类似
JSP页面标签授权 页面授权标签包含
<shiro:authenticated> 登录之后 <shiro:notAuthenticated> 不在登录状态时 <shiro:guest> 用户在没有RememberMe时 <shiro:user> 用户在RememberMe时 <shiro:hasAnyRoles name="testRole,888" > 在有testRole或888角色时 <shiro:hasRole name="testRole"> 拥有角色testRole <shiro:lacksRole name="testRole"> 没有角色testRole <shiro:hasPermission name="testRole"> 拥有权限资源testRole <shiro:lacksPermission name="testRole"> 没有testRole权限资源 <shiro:principal> 显示用户身份名称 <shiro:principal property="username"/> 显示用户身份中的属性值
这篇关于Shiro Subject详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-13Slicm 框架怎么进行用户认证?-icode9专业技术文章分享
- 2024-11-13在查询时将 map_coord 列的值转换为字符串有哪些方法?-icode9专业技术文章分享
- 2024-11-13如何将微信地区改成自定义文案?-icode9专业技术文章分享
- 2024-11-13DNS 缓存存在问题有哪些症状和解决方法?-icode9专业技术文章分享
- 2024-11-13HTTP 状态码(405)-Method Not Allowed是什么意思?-icode9专业技术文章分享
- 2024-11-13HTTP 状态码(500)-Internal Server Error是什么意思?-icode9专业技术文章分享
- 2024-11-13在 Element UI 中无法修改 $confirm 的取消按钮文字是什么原因?-icode9专业技术文章分享
- 2024-11-13unity XR是什么?-icode9专业技术文章分享
- 2024-11-13伴随矩阵是什么?-icode9专业技术文章分享
- 2024-11-13怎么使用grep -E 来查找匹配最后 2 条数据?-icode9专业技术文章分享