Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > JavaWeb技术相关 >

Shiro+Vue实现前后端分离项目解决方案 PDF 下载


分享到:
时间:2021-05-15 12:45来源:http://www.java1234.com 作者:转载  侵权举报
Shiro+Vue实现前后端分离项目解决方案 PDF 下载
失效链接处理
Shiro+Vue实现前后端分离项目解决方案 PDF 下载


本站整理下载:
提取码:754n 
 
 
相关截图:
 
主要内容:


1.简介Apache Shiro 是⼀个开源、轻量级的 Java 安全框架。功能强⼤,使⽤简单的Java安全框架,它为 开发⼈员提供⼀个直观⽽全⾯的认证,授权,加密及会话管理的解决⽅案。 2.Shiro架构 任何的主体(⽆论是c++程序还是Java程序),在授权时都会经由SecuirityManager处理。如果是 授权问题,则由Authorizer处理,如果是认证,则由Authenticator处理。授权指的是将应⽤的权⼒赋 予其他主体,其中主体是已经经过认证的主体。⽽认证是将为经过认证的主体进⾏认证,将其判定为 系统⻆⾊或⾮系统⻆⾊。 3.主要功能 三个核⼼组件:Subject, SecurityManager 和 Realms
Subject:即“当前操作⽤⼾”。但是,在Shiro中,Subject这⼀概念并不仅仅指⼈,也可以是第三 ⽅进 程、后台帐⼾(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东 西”。Subject代表了当前⽤⼾的安全操作,Subject 都绑定到 SecurityManager,与 Subject 的所有 交互都会委托给 SecurityManager。 SecurityManager:安全管理器,即所有与安全有关的操作都会与 SecurityManager 交互,并且它 管理着所有 Subject。它是Shiro框架的核⼼,典型的Facade模式(⻔⾯模式),Shiro通过 SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。 Realm: 域,Shiro 从 Realm 获取安全数据(如⽤⼾、⻆⾊、权限),就是说 SecurityManager 要 验证⽤⼾⾝份,那么它需要从 Realm 获取相应的⽤⼾进⾏⽐较以确定⽤⼾⾝份是否合法;也需要从 Realm 得到⽤⼾相应的⻆⾊ / 权限进⾏验证⽤⼾是否能进⾏操作;与数据进⾏交互。 从这个意义上讲,Realm实质上是⼀个安全相关的DAO:它封装了数据源的连接细节,并在需要 时将相关数据提供给Shiro。当配置Shiro时,你必须⾄少指定⼀个Realm,⽤于认证和(或)授权。 配置多个Realm是可以的,但是⾄少需要⼀个。 4.代码实现 4.1 创建Realm Java public class ShiroRealm extends AuthorizingRealm { private static final Logger log = LoggerFactory.getLogger(ShiroRealm.class); @Autowired private TUserService tUserService; @Autowired private TRoleService tRoleService; @Override public String getName() { return "shiroRealm"; }/*** @MethodName doGetAuthorizationInfo * @Description 实现授权⽅法 * @Param [principalCollection] * @Return AuthorizationInfo * @Author WangShiLin */ 123456789101112131415161718192021
/ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection princ ipals) {log.info("⽤⼾⻆⾊认证"); SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizatio nInfo();//获取登录⽤⼾名 String name = (String) principals.getPrimaryPrincipal(); //根据⽤⼾名称查询⽤⼾ TUser user = tUserService.getUserByUserName(name); try {List<TRole> roles = tRoleService.selectRoleByUserId(user.getId()); //添加⻆⾊和权限 for (TRole role : user.getRoles()) { //添加⻆⾊ simpleAuthorizationInfo.addRole(role.getName()); //添加权限 for (TPermission permissions : role.getPermissions()) { simpleAuthorizationInfo.addStringPermission(permissions.getN ame()); } } } catch (Exception e) { log.error("异常信息{}", e.getMessage()); }return simpleAuthorizationInfo; }/*** @MethodName doGetAuthenticationInfo * @Description 认证⽅法 * @Param [authenticationToken] * @Return AuthenticationInfo * @Author WangShiLin */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken aut henticationToken) throws AuthenticationException { log.info("执⾏认证逻辑"); // 获得token UsernamePasswordToken token =(UsernamePasswordToken)authenticationToken; // 获得t k ⾥的⽤⼾信息 2223242526272829303132333435363738394041424344454647484950515253545556575859606162
// 获得token⾥的⽤⼾信息 String userName = token.getUsername(); //1.判断⽤⼾名 // 在实际项⽬中调⽤认证的业务层来处理认证业务 // shiro中内置了⾮常多的认证异常 // AuthenticationException:Shiro在登录认证过程中,认证失败需要抛出的异常 if(StringUtils.isBlank(userName)){ throw new AuthenticationException("⽤⼾不存在!"); }TUser user = tUserService.getUserByUserName(userName); if (user == null) { return null; }/*** user:可以传⽤⼾名,⻚可以传递user对象 * user.getPassword():密码 * getName(): 当前realm的名字 */SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationIn fo(user,user.getPassword(),getName()); return authenticationInfo; } } 626364656667686970717273747576777879808182838485

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐