• springboot_shiro与shiro.ini文件


    package com.book.app.utils;

    import java.util.LinkedHashMap;
    import java.util.Map;

    import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
    import org.apache.shiro.spring.LifecycleBeanPostProcessor;
    import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
    import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.DependsOn;

    /**
    *
    * 功能:shiro和springboot的整合相当于shiro.ini文件
    * 作者:张
    * 2018年10月18日上午10:18:35
    */
    @Configuration
    public class ShiroConfiguration {

    /**
    * LifecycleBeanPostProcessor,这是个DestructionAwareBeanPostProcessor的子类,
    * 负责org.apache.shiro.util.Initializable类型bean的生命周期的,初始化和销毁。
    * 主要是AuthorizingRealm类的子类,以及EhCacheManager类。
    */
    @Bean(name = "lifecycleBeanPostProcessor")
    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
    return new LifecycleBeanPostProcessor();
    }

    /**
    * HashedCredentialsMatcher,这个类是为了对密码进行编码的,
    * 防止密码在数据库里明码保存,当然在登陆认证的时候,
    * 这个类也负责对form里输入的密码进行编码。
    */
    @Bean(name = "hashedCredentialsMatcher")
    public HashedCredentialsMatcher hashedCredentialsMatcher() {
    HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
    credentialsMatcher.setHashAlgorithmName("MD5");
    credentialsMatcher.setHashIterations(2);
    credentialsMatcher.setStoredCredentialsHexEncoded(true);
    return credentialsMatcher;
    }

    /**ShiroRealm,这是个自定义的认证类,继承自AuthorizingRealm,
    * 负责用户的认证和权限的处理,可以参考JdbcRealm的实现。
    */
    @Bean
    @DependsOn("lifecycleBeanPostProcessor")
    public MyRealm shiroRealm() {
    return new MyRealm();
    }

    /**
    * SecurityManager,权限管理,这个类组合了登陆,登出,权限,session的处理,是个比较重要的类。
    */
    @Bean(name = "securityManager")
    public DefaultWebSecurityManager securityManager() {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    securityManager.setRealm(shiroRealm());
    return securityManager;
    }

    /**
    * ShiroFilterFactoryBean,是个factorybean,为了生成ShiroFilter。
    * 它主要保持了三项数据,securityManager,filters,filterChainDefinitionManager。
    */
    @Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean shiroFilterFactoryBean() {
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    shiroFilterFactoryBean.setSecurityManager(securityManager());
    Map<String, String> filterChainDefinitionManager = new LinkedHashMap<String, String>();
    filterChainDefinitionManager.put("/jquery/**", "anon");
    filterChainDefinitionManager.put("/login", "anon");
    // filterChainDefinitionManager.put("/**", "anon");
    filterChainDefinitionManager.put("/**", "authc");
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionManager);
    return shiroFilterFactoryBean;
    }

    }

  • 相关阅读:
    node lesson2
    二级联动(list对象中存list对象)
    Spring的注解@Qualifier注解
    @Service(value = "aaaa") 和@Service( "a")的区别
    oracle分页
    Oracle数据导入导出imp/exp
    oracle截取某个字符前面的字符串
    oracle中截取某个字符前面和后面的值
    解决Eclipse启动报错Failed to create the Java Virtual Machine
    成功秘诀就是拿出勇气和坚定的信念去做自己喜欢并且擅长的事情
  • 原文地址:https://www.cnblogs.com/manager222/p/9810560.html
Copyright © 2020-2023  润新知