Shiro

作者: AMD_Ryzen | 来源:发表于2020-04-07 23:13 被阅读0次

    1 Shiro 概述

    1.1 功能介绍

    img
    1. Authentication:身份认证/登陆

    2. Authorization:授权验证

    3. Session Manager:会话管理

    4. Cryptography:加密

    5. Web Support:Web 支持

    6. Caching:缓存

    7. Concurrency:并发验证

    8. Testing:测试支持

    9. Run As:授予权限

    10. Remember Me:记住我

    1.2 架构说明

    img
    1. Subject 主体:当前操作的用户。可以是通过浏览器请求的用户,也可以是一个运行的程序

    2. SecurityManager 安全管理器:对全部的Subject进行安全管理。实质通过Authenticator 认证,Authorizer 授权,SessionManager 会话管理。

    3. Authenticator:身份认证器

    4. Authorizer:权限认证器

    5. Realm:用户权限数据

    6. SessionManager :会话管理

    7. SessionDAO:session会话操作

    8. CacheManager:缓存管理

    9. Cryptography:密码管理

    2 Shiro.ini

    2.1 说明

    1. ini初始文件

    2. 可以连接数据库,不需要ini

    2.2 组成部分

    1. [main]:定义全局变量


      image.png
    1. [users]:定义用户名和密码


      image.png
    1. [roles]:定义角色


      image.png
    1. [urls]:定义哪些url的过滤器生效


      image.png
    image.png

    3 实现认证

    3.1 基本概念

    1. 身份验证:提供principals和credentials证明

    2. principals 身份:唯一标识主体,如:用户名、邮箱

    3. credentials 证明:主体知道的安全值,如:密码、数字证书

    3.2 认证流程

    img

    3.3 使用ini文件完成认证

    //1. 创建管理员
    DefaultSecurityManager securityManager = new DefaultSecurityManager();
    
    //2. 读取用户权限数据
    IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
    
    //3. 设置用户权限数据
    securityManager.setRealm(iniRealm);
    
    //4.设置管理员
    SecurityUtils.setSecurityManager(securityManager);
    
    //5.获取当前用户
    Subject currentUser = SecurityUtils.getSubject();
    //还可以获取session
    Session session = currentUser.getSession();
    session.setAttribute("someKey", "aValue");
    
    //6. 用户验证token
    UsernamePasswordToken token = new UsernamePasswordToken("root", "root1");
    try {
        currentUser.login(token);
        System.out.println("验证通过");
    } catch (AuthenticationException e) {
        log.error("请核对账户与密码");
        e.printStackTrace();
    }
    

    相关文章

      网友评论

          本文标题:Shiro

          本文链接:https://www.haomeiwen.com/subject/jdkaphtx.html