• SpringBoot整合Shiro


    概述

    Shiro和SpringSecurity都是很经典的安全框架,shiro相对SpringSecutiry来说,属于轻量级框架。

    一般我们在写中大型项目时,偏向于使用SpringSecutiry框架;而在写中小型的项目时,偏向于使用Shiro框架

    • SSM+shiro
    • SpringBoot+shiro

    接下来就简单介绍一下怎么使用SpringBoot整合Shiro

    maven依赖

    1. <dependency>
    2. <groupId>org.apache.shirogroupId>
    3. <artifactId>shiro-springartifactId>
    4. <version>1.4.1version>
    5. dependency>
    6. <dependency>
    7. <groupId>javax.servletgroupId>
    8. <artifactId>servlet-apiartifactId>
    9. <version>2.5version>
    10. dependency>

    servlet依赖不导的话会报错,具体原因我也不清楚。

    如果再导入shiro的依赖的时候出现了找不到依赖的情况,根据下面的图片修改maven设置

     将Maven的主路径修改为自己下载的maven地址,设置文件也修改为自己下载的maven包中的设置文件,本地仓库同理

    然后点击刷新按钮,重新加载maven依赖即可。

    UserRealm

    自定义UseRealm

    1. public class UserRealm extends AuthorizingRealm {
    2. //授权
    3. @Override
    4. protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
    5. System.out.println("实现授权");
    6. return null;
    7. }
    8. //认证
    9. @Override
    10. protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
    11. System.out.println("实现认证");
    12. return null;
    13. }
    14. }

    shiroConfig

    编写shiro配置类,具体根据自己的需求配置

    1. @Configuration
    2. public class shiroConfig {
    3. @Bean
    4. public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("defaultShiroWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager)
    5. {
    6. ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    7. //和DefaulyWebSecurityManager关联,设置安全管理器
    8. shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);
    9. //添加shiro的内置过滤器
    10. /*
    11. anon:无需认证就可以访问
    12. authc:必须要认证了才能访问
    13. user:必须拥有 记住我 才能用
    14. perms:拥有对某个资源的权限才能访问
    15. role:拥有某个角色权限才能用
    16. */
    17. Map filterChainDefinitionMap = new LinkedHashMap<>();
    18. filterChainDefinitionMap.put("/user/**","user");
    19. System.out.println("jj");
    20. shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
    21. //设置登录的请求
    22. shiroFilterFactoryBean.setLoginUrl("/ToLogin");
    23. return shiroFilterFactoryBean;
    24. }
    25. @Bean
    26. public DefaultWebSecurityManager defaultShiroWebSecurityManager(@Qualifier("getUserRealm") UserRealm userRealm)
    27. {
    28. DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    29. //和UserRealm关联
    30. securityManager.setRealm(userRealm);
    31. return securityManager;
    32. }
    33. @Bean
    34. public UserRealm getUserRealm()
    35. {
    36. return new UserRealm();
    37. }
    38. }

  • 相关阅读:
    Vue 多选下拉框值每组名字的只能选一个
    基于Springboot的宠物医院管理系统-JAVA【数据库设计、论文、源码、开题报告】
    Redis缓存雪崩、缓存穿透、缓存击穿
    1. windows安装elasticSearch
    结合protobuf和socket实现多进程通讯
    手写promis(2)-- 链式编程篇
    Golang: Store Query Result in a Map
    [力扣 Hot100]Day38 翻转二叉树
    Kotlin File readText readLines readBytes
    关于我加了一行日志搞崩了服务这件小事
  • 原文地址:https://blog.csdn.net/MogulNemenis/article/details/133933442