SpringBoot整合Shiro

概述

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

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

  • SSM+shiro
  • SpringBoot+shiro

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

maven依赖

 
            org.apache.shiro
            shiro-spring
            1.4.1
        

        
            javax.servlet
            servlet-api
            2.5
        

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

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

SpringBoot整合Shiro_第1张图片

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

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

UserRealm

自定义UseRealm

public class UserRealm extends AuthorizingRealm {
    //授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        System.out.println("实现授权");
        return null;
    }

    //认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        System.out.println("实现认证");

        return null;
    }
}

shiroConfig

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


@Configuration
public class shiroConfig {

    @Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("defaultShiroWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager)
    {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        //和DefaulyWebSecurityManager关联,设置安全管理器
        shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);

        //添加shiro的内置过滤器
        /*
            anon:无需认证就可以访问
            authc:必须要认证了才能访问
            user:必须拥有 记住我 才能用
            perms:拥有对某个资源的权限才能访问
            role:拥有某个角色权限才能用
         */
        Map filterChainDefinitionMap = new LinkedHashMap<>();
        filterChainDefinitionMap.put("/user/**","user");
        System.out.println("jj");

        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

        //设置登录的请求
        shiroFilterFactoryBean.setLoginUrl("/ToLogin");

        return shiroFilterFactoryBean;
    }


    @Bean
    public DefaultWebSecurityManager defaultShiroWebSecurityManager(@Qualifier("getUserRealm") UserRealm userRealm)
    {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        //和UserRealm关联
        securityManager.setRealm(userRealm);
        return securityManager;
    }

    @Bean
    public UserRealm getUserRealm()
    {
        return new UserRealm();
    }
}

你可能感兴趣的:(学习总结,spring,boot,后端,java)