zoukankan      html  css  js  c++  java
  • Springboot整合Shiro

    Springboot整合shiro

    添加依赖

            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-spring</artifactId>
                <version>1.7.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>

    编写shiro配置类

    需要实现shiro中的三个核心对象:Subject、SecurityManager、Realm

    @Configuration
    public class ShiroConfig {
        //ShiroFilterFactoryBean(过滤器工厂对象:初始化SecurityManager、请求处理)
        @Bean
        public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
            ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
            // 设置 securityManager
            shiroFilterFactoryBean.setSecurityManager(securityManager);
    
            LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
            // 内置过滤器 
    //anon:无需认证
         //authc:必须认证
         //user:必须有记住我功能才能使用
         //perms:指定权限
         //role:指定角色
    filterChainDefinitionMap.put("/**", "authc"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; } //DefaultWebSecurityManager(对应SecurityManager对象) @Bean public SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); // 配置 SecurityManager,并注入 shiroRealm securityManager.setRealm(shiroRealm()); return securityManager; } //Realm 需要自定义 @Bean public ShiroRealm shiroRealm() { // 配置 Realm return new ShiroRealm(); } }

    Realm

    public class ShiroRealm extends AuthorizingRealm {
    
        /**
         * 认证
         * @param authenticationToken
         * @return
         * @throws AuthenticationException
         */
        @Override
        protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
            return null;
        }
        /**
         * 授权
         * @param principalCollection
         * @return
         */
        @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
            return null;
        }
    }
    View Code

    Controller

    @Controller
    public class IndexController {
        @GetMapping("/index")
        public String index(){
            return "index";
        }
    }

    访问结果失败:认证失败,并且没有登录页面,

  • 相关阅读:
    LoadRunner脚本关联动态数据的最简单方法
    LoadRunner 检查点函数总结
    算法(一)时间复杂度
    JAVA虚拟机总结
    java8中Lambda表达式和Stream API
    算法总结
    listview 异步加载图片并防止错位
    Java设计模式菜鸟系列(一)策略模式建模与实现
    Python基础--webbrowser
    Shiro学习(22)集成验证码
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15176217.html
Copyright © 2011-2022 走看看