首页 > 其他分享 >白话介绍shiro及使用

白话介绍shiro及使用

时间:2024-07-23 17:44:03浏览次数:10  
标签:白话 介绍 getMessage catch new password throw shiro

一、shiro 是一款安全框架
主要功能,如下

二、shiro登录流程步骤

三、所以使用shiro需要配置一些东西
** 1.自定义AuthorizingRealm**
重写doGetAuthenticationInfo方法
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken upToken = (UsernamePasswordToken) token;
String username = upToken.getUsername();
String password = "";
if (upToken.getPassword() != null)
{
password = new String(upToken.getPassword());
}

    SysUser user = null;
    try
    {
        user = loginService.login(username, password);
    }
    catch (CaptchaException e)
    {
        throw new AuthenticationException(e.getMessage(), e);
    }
    catch (UserNotExistsException e)
    {
        throw new UnknownAccountException(e.getMessage(), e);
    }
    catch (UserPasswordNotMatchException e)
    {
        throw new IncorrectCredentialsException(e.getMessage(), e);
    }
    catch (UserPasswordRetryLimitExceedException e)
    {
        throw new ExcessiveAttemptsException(e.getMessage(), e);
    }
    catch (UserBlockedException e)
    {
        throw new LockedAccountException(e.getMessage(), e);
    }
    catch (RoleBlockedException e)
    {
        throw new LockedAccountException(e.getMessage(), e);
    }
    catch (Exception e)
    {
        log.info("对用户[" + username + "]进行登录验证..验证未通过{}", e.getMessage());
        throw new AuthenticationException(e.getMessage(), e);
    }
    SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, password, getName());
    return info;
}
  1. 创建SecurityMananger并注入到spring容器
    @Bean
    public SecurityManager securityManager(UserRealm userRealm) {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    // 设置realm.
    securityManager.setRealm(userRealm);
    return securityManager;
    }

  2. 通过 Subject.login 登录验证
    UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
    Subject subject = SecurityUtils.getSubject();
    try {
    subject.login(token);
    return success();
    } catch (AuthenticationException e) {
    String msg = "用户或密码错误";
    if (StringUtils.isNotEmpty(e.getMessage())) {
    msg = e.getMessage();
    }
    return error(msg);
    }

这样会有一个问题,登录的用户 我们没有做处理,我们可以把登录的用户数据保存起来,以sessionId为key,当然也可以做成jwt + redisCache

标签:白话,介绍,getMessage,catch,new,password,throw,shiro
From: https://www.cnblogs.com/velloLei/p/18319123

相关文章

  • Spring MVC、Spring Boot 和 Spring Cloud简要介绍及区别
    SpringMVC、SpringBoot和SpringCloud是Spring生态系统中的三个重要组件,它们在不同层面上帮助开发者构建和管理应用程序。以下是对它们的介绍及其区别:SpringMVC介绍SpringMVC(Model-View-Controller)是一个基于Java的Web框架,用于构建Web应用程序和RESTful服务。它......
  • MyBatis 和 MyBatis-Plus 介绍及适用场景
    MyBatis和MyBatis-Plus介绍及适用场景MyBatis介绍MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数及获取结果集的工作。与Hibernate这种全自动ORM框架不同,MyBatis允许开发者通过简单......
  • Oracle 和 MySQL 介绍及适用场景
    Oracle和MySQL介绍及适用场景Oracle介绍OracleDatabase是甲骨文公司开发的一款关系数据库管理系统。Oracle数据库是目前市场上最流行的数据库之一,广泛应用于大型企业和复杂业务系统中。Oracle提供了全面的数据管理和分析功能,支持事务处理、大规模数据库管理、高并......
  • 昇腾AI基础软硬件平台介绍
    面向训练场景的有Ascend910系列和Ascend310系列 AICORE是昇腾AI处理器的计算核心,采用华为自研究的达芬奇架构。具有矩阵计算单元,向量计算单元,标量计算单元,累加器CANN逻辑架构介绍。是华为针对AI推出的异构计算架构。 服务层 计算编译层 ......
  • 白话理解Jwt验证
    一、jwt叫jsonwebtoken,也就是个token,这个token按照json格式在客户端与服务器之间传输。jwt的产生过程1.客户端提交用户、密码、验证码...2.服务端验证用户密码,通过后,随机成uuid,以服务端保密的secureKey,通过加密手段一般为HS512加密方式,加密成一串JSON密文,也就是jwt3......
  • 4、内存品牌分类介绍(海盗船) - 计算机硬件品牌系列文章
    海盗船(‌Corsair)‌是一家位于美国加利福尼亚州佛利蒙的私有公司,‌成立于1994年,‌由DonLieberman、‌JohnBeekley与AndyPaul创立。‌海盗船内存(‌CorsairMemory)‌,‌国内又称海盗旗,‌是高性能内存解决方案的先驱者,‌以其超稳定内存产品而在业界声名远播。‌该品牌的产品在极......
  • GBase 8a MPP Cluster集群系统表介绍
    转:https://blog.csdn.net/yintao_wen/article/details/1093822881GBase8aMPPCluster集群系统表介绍1.1集群系统表1.1.1gbase库1.1.1.1用户字典表gbase.user字段名注释USER用户名PASSWORD密码,加密不可见1.1.1.2表字典表gbase.table_distribution:用于查看数据库中的表......
  • Docker 笔记 - Docker 容器重启策略 --restart 介绍和实战
    https://zhuanlan.zhihu.com/p/494370957 1.Docker容器的重启策略目的为了保证容器运行时健壮性(自愈),Docker提供了容器重启策略,即使用参数--restart,它可以让容器在退出时自动尝试重启。场景Docker容器的重启策略一般用于生产环境,开发环境和实验环境可以忽略。例如使......
  • 介绍一下TCP/IP 模型和 OSI 模型的区别
    OSI模型是由国际标准化组织制定的一个用于计算机或通信系统间互联的标准体系,一共有七层,由上而下分别为应用层,表示层,会话层,传输层,网络层,数据链路层和物理层,虽然OSI模型理论上更加全面,但实际上使用更多的主要是TCP/IP模型,它一共有四层,将OSI模型的中的应用层表示层和会......
  • 登陆京东(滑块验证),验证码识别,Scrapy框架介绍及其使用,持久化存储到本地
    Ⅰ案例登陆京东(滑块验证)【一】下载opencv库pipinstallopencv-python【二】数据准备先将京东的滑块图片下载到本地背景图background.png滑块图tag.png【三】展示获取滑块的移动数据importos.path#使用opencv识别图像计算滑块之间的距离importcv2impo......