Shiro和SpringSecurity都是很经典的安全框架,shiro相对SpringSecutiry来说,属于轻量级框架。
一般我们在写中大型项目时,偏向于使用SpringSecutiry框架;而在写中小型的项目时,偏向于使用Shiro框架。
接下来就简单介绍一下怎么使用SpringBoot整合Shiro
- <dependency>
- <groupId>org.apache.shirogroupId>
- <artifactId>shiro-springartifactId>
- <version>1.4.1version>
- dependency>
-
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>servlet-apiartifactId>
- <version>2.5version>
- dependency>
servlet依赖不导的话会报错,具体原因我也不清楚。
如果再导入shiro的依赖的时候出现了找不到依赖的情况,根据下面的图片修改maven设置

将Maven的主路径修改为自己下载的maven地址,设置文件也修改为自己下载的maven包中的设置文件,本地仓库同理
然后点击刷新按钮,重新加载maven依赖即可。
自定义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;
- }
- }
编写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();
- }
- }