转自:

Shiro Subject详解

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为我们提供的session2.此处的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详解相关推荐

  1. 简单版 快速掌握实践 SpringBoot继承Shiro框架详解!

    文章目录 演示GIF 一.Shiro简介 1.什么是Shiro 2.有哪些功能 3.Shiro架构(外部) 4.Shiro架构(内部) 二.快速实践 项目搭建 1.数据库 2.实体类 3.mapper ...

  2. Shiro 框架详解

    Shiro 是一款轻量级的 Java 安全框架,提供了身份认证.授权.加密和会话管理等功能.它可以集成到任何 Java Web 应用程序中,并且易于使用和扩展.Shiro 的设计理念是简洁而灵活,不仅 ...

  3. shiro过滤器详解

    常用的过滤器为AuthenticatingFilter,具体看一看它是怎么实现的. 先说一下servlet的过滤器链的规则: servlet中过滤器Filter只有三个方法,当我们自定义过滤器的时候需 ...

  4. shiro放行_Shiro框架详解 tagline

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

  5. shiro subject.getprincipal()为null_(变强、变秃)Java从零开始之Shiro安全框架

    Shiro安全框架 一.Shiro简介 二.Shiro架构图 三.Shiro涉及常见名词 四.Shiro配置文件详解 shiro.ini 文件放在 classpath 下 ,shiro 会自动查找.其 ...

  6. RxJS 系列之二 - Observable 详解

    查看新版教程,请访问前端修仙之路 RxJS 系列目录 RxJS 系列之一 - Functional Programming 简介 RxJS 系列之二 - Observable 详解 (本文) RxJS ...

  7. shiro登陆流程源码详解

    前言 抽取了shiro最基本的登陆流程(web登陆是基于这层开发的). 详解源码 创建一个AuthenticationToken进行登录. SecurityUtils.getSecurityManag ...

  8. Shiro 登录认证源码详解

    Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加的简单. 本文主要介绍 Shi ...

  9. (转) shiro权限框架详解06-shiro与web项目整合(上)

    http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...

  10. Shiro——从零开始进行详解官方入门案例

    首先进入shiro的官网下载源码http://mirror.bit.edu.cn/apache/shiro/1.5.0/shiro-root-1.5.0-source-release.zip 下载完毕 ...

最新文章

  1. 图书管理系统python源代码-Python实现图书管理系统
  2. Centos7升级python
  3. SQL常用字符串函数
  4. easyui带表单的弹窗效果制作
  5. C#decimal数据类型
  6. LeetCode 1053. 交换一次的先前排列
  7. matlab 变量和数组中,求助:如何将带有符号变量的运算结果储存到数组中
  8. 【Clickhouse】Clickhouse 运算符 操作符 算术,比较,取整,逻辑,哈希,条件 字符串函数
  9. jpages中文api
  10. 如何开始第一个开源项目?
  11. camerax_Android CameraX OpenCV图像处理
  12. 表单提交后打印后台传过来的数据
  13. Linux动态库soname的使用(转载)
  14. 逆向project第003篇:跨越CM4验证机制的鸿沟(上)
  15. 阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用
  16. 话题热议:有没有能替代Excel的数据处理软件?
  17. 嵌入式c语言 c语言_C和嵌入式C有什么区别?
  18. linux怎么配置网卡地址,Linux下如何配置网卡地址呀?
  19. 计算机键盘输入法基础知识,电脑基础知识:使用键盘打字
  20. html实现微信扫一扫,JS 实现微信扫一扫功能

热门文章

  1. 2021年下半年软考网络工程师真题答案解析
  2. html网页设计与制作:基于html设计整套招聘网站求职前端模板页面 静态网页HTML代码 学生网页课程设计期末作业下载...
  3. 清华数据结构c语言版严蔚敏pdf,清华数据结构习题集答案(C语言版严蔚敏).pdf
  4. linux安装后进不去windows,linux双系统安装后进不去windows解决办法
  5. markdown模板
  6. OPC 通讯 Demo
  7. 华为智能体发布,智能联接火了
  8. arduino流水灯代码
  9. 万年历单片机课程设计百度文库_单片机课程设计报告(万年历)
  10. 史上最全Java学习视频下载地址分享