美文网首页
Shiro安全框架

Shiro安全框架

作者: 小螺丝钉cici | 来源:发表于2018-08-01 20:48 被阅读0次

    Shiro Session管理
    Shiro 缓存管理
    Shiro集成Spring
    Shiro集成SpringBoot:https://blog.csdn.net/yueshutong123/article/details/80508848
    Demo:https://github.com/sunzeying/shiro-imooc
    学习链接:http://wiki.jikexueyuan.com/project/shiro/right.html
    学习视频:https://www.imooc.com/video/16966/0

    一.什么是Shiro?
    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理

    二.Shiro和SecuritySecurity比较

    image.png

    三.Shiro整体架构
    Authenticator : 认证器管理登录登出
    Authorizer:授权器
    sessionManager: Session管理器
    CacheManager:缓存管理器
    Cryptography :数据加密

    image.png

    四.Shiro认证
    Shiro认证过程:
    1 创建SecurityManager 环境
    2 主体提交(Subject)认证
    3 通过SecurityManager认证
    4 通过Authenticator 认证
    5 通过Realm 认证(连接数据库的桥梁)

    image.png

    Shiro授权过程:
    1 创建SecurityManager 环境
    2 主体提交(Subject)授权
    3 通过SecurityManager授权
    4 Realm获取角色权限数据
    5 Authenticator授权

    image.png

    五.Shiro自定义Realm 以及是内置Realm (iniRealm / JdbcRealm)
    内置Realm 之 iniRealm :

    image.png image.png

    内置Realm 之JdbcRealm:

    image.png

    自定义Realm:

    image.png image.png

    六.Shiro加密
    配置Shiro加密,完成自动加盐,自动加密:

    image.png image.png

    七.通过注解的方式实现授权

      requireRoles("admin"):只有具有admin的角色才能访问
      requirePermissions :控制角色权限的注解,可以写入多个角色权限,推荐使用
    

    八.Shiro过滤器
    Shiro内置过滤器:
    anon:不需要认证
    authBasic:httpBasic
    authc:需要认证之后才能访问
    user:需要当前存在用户才能访问
    logout:退出
    perms[] :需要具备相关的权限才可以访问
    roles[]: 需要具有[]内的相关权限才可以访问
    ssl : 要求是安全的协议
    port: 要求端口是[]中的

    九.Shiro会话管理
    SessionManager,SessionDAO
    Redis实现Session共享
    Redis实现Session共享存在的问题

    十.Shiro 自动登录
    用户的自动登录功能,顾名思义就是当用户在网站登录后,关闭了浏览器或者服务器重启了在下一次用户访问该网站时能自动将上次用户的登录信息取出来并立即登录,而不再需要用户去做登录操作。

    Subject subject = SecurityUtils.getSubject();
    if (!subject.isAuthenticated() && subject.isRemembered()) {
            Object principal = subject.getPrincipal();
            if (null != principal) {
                User user = userSvc.getByUsername(String.valueOf(principal));
                String password = user.getPassword();
                UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), password);
                token.setRememberMe(true);
                subject.login(token);//登录
            }
        }

    相关文章

      网友评论

          本文标题:Shiro安全框架

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