Shiro 切换角色身份runAs()_Spring Boot Shiro 角色身份切换

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(3051)   2023-03-28 11:29:14

故事

        今天遇到了一个问题,就是一个用户属于多个部门,之前的角色是挂在部门下的,也就说处理不同业务需要不同的部门,这里就暂时考虑了在线的用户角色切换,项目中使用的是shiro权限框架。

首先是解决角色切换的思路

问题解决思路



步骤一:
根据当前登录的用户,获取该用户所有的部门+角色。(代码根据各个系统而定,这里不写)

步骤二:
传入选择的角色信息,生成新的认证用户(也就是切换过去的。)需要注意以下几点

首先runAs方法来自shiro的subject对象
 ShiroUtils.getSubjct().runAs(new SimplePrincipalCollection(swUser, ""));
操作示例图-4258fb6851aa4e03ae3a40ae781645a7.png
PrincipalCollection接口实现类

runAs()方法其需要一个参数,PrincipalCollection接口的实现,目前简单的使用就是使用SimplePrincipalCollection类来作为参数,它实现了PrincipalCollection。再创建SimplePrincipalCollection对象过程中,需要注意,SimplePrincipalCollection类有很多构造方法,这里我们用的是
public SimplePrincipalCollection(Object principal, String realmName) 
  • 参数一:   Object principal
  • 参数二:String realmName

注意:参数一中的principal,要与你的Realm中处理登录的SimpleAuthenticationInfo()里面的principal一直。public SimpleAuthenticationInfo(Object principal, Object credentials, String realmName) ;提示:我再Realm中实现登录认证结果返回是使用的SimpleAuthenticationInfo

可能看到了我上面的第二个参数我传的空字符串,因为我是同一个用户切换,所以空字符串也可以,当然指定登录时候SimpleAuthenticationInfo传递的realmName也是可以的。但是注意不能是null。
SimpleAuthenticationInfo
SimpleAuthenticationInfo


处理完毕后就是前台的刷新页面了。可以使用window.location.reload(仅作参考);
 
标签: shiro spring boot
地址:https://www.leftso.com/article/662.html

相关阅读

一、spring boot shiro 无状态token认证项目结构图​二、无状态spring boot shiro相关配置2.1shiro redis 缓存配置首先是实现shiro的cache...
Java编程之spring boot shiro redis整合基于角色和权限的安全管理,Java编程,spring boot,shiro,权限控制
一、项目环境Spring Boot 2.1.2.RELEASEshiro-spring 1.4二、去掉URL jsessionid在shiro配置中,配置关闭url中显示sessionId ...
Apache Shiro教程,您的第一个Apache Shiro应用程序(翻译)-编程技术
故事        今天遇到了一个问题,就是一个用户属于多个部门,之前的角色是挂在部门下的,也就说处理不同业务需要不同的部门,这里就暂时考虑了在线的用户角色切换,项目中使用的是shiro权限框架
问题描述最近网站被运营商劫持很严重,忍受不了,全站上了HTTPS
组态,将Shiro集成到任何Web应用程序中的最简单的方法是在web.xml中配置Servlet ContextListener和Filter,了解如何读取Shiro的INI配置。
出现@Transactional事务不生效原因shiro 的Realm 中注入了用到事务的service,例如下面的​ /** * 自定义权限认证器 * 自定义实现Realm,实现自定义获取...
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Spring Boot 2.0,Spring框架的Spring Boot 中的Spring Boot Actuator变化讲解。并且了解如何在Spring Boot 2.0中使用Actuator...