springboot——Shiro

思路:创建工厂并读取shiro.ini配置文件,通过工厂创建SecurityManager对象,使用SecurityUtils工具类设置SecurityManager对象,在通过SecurityUtils获取Subject对象,将用户名和密码封装到token,Subject调用login(token)将用户名和密码传给securityManager,securityManager调用realm进行认证和授权。

Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");

SecurityManager securityManager = factory.getInstance();

SecurityUtils.setSecurityManager(securityManager);

Subject currentUser = SecurityUtils.getSubject();

Subject常用方法

Session session = subject.getSession();

session.setAttribute("someKey", "aValue");

String value = (String) session.getAttribute("someKey");

subject.isAuthenticated()    是否登录

subject.login(token)    //    执行登录

subject.getPrincipal()    //    打印用户名

subject.hasRole("schwartz")    //是否有角色

subject.isPermitted("lightsaber:wield")    //是否有权限

subject.isPermitted("winnebago:drive:eagle5")    //是否更高级权限

subject.logout()    //    注销

subject.login()抛出的异常

UnknownAccountException uae        //    无此用户

IncorrectCredentialsException ice     //    密码和用户名不匹配 

LockedAccountException lae             //    账户被锁定 

AuthenticationException ae                //    其他情况 


三大对象

        Subject:用户/主体/项目

        SecurityManager:管理所用用户

        Realm:连接数据 ,进行授权和认证(登录)


内置过滤器
        onon:无需认证即可访问

        outhc:必须认证

        user  :必须有 记住我 功能才能访问

        perms:拥有对某个资源的权限才能访问

        role    :拥有某个角色权限才能访问


springboot集成:

        1.导入jar shiro-spring

        2.创建继承于AuthorizingRealm的UserRealm

        3.编写配置类重写方法


        4.配置类中,编写拦截器




自定义Realm:

        继承AuthorizingRealm重写授权和认证方法


获取token


整合thymeleaf

        1.导包:thymeleaf-spring5,thymeleaf-extras-java8time

        2.配置类添加配置

        3.使用


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容