Shiro 配置详解:如何关闭 Shiro 以及代码示例
Shiro 配置详解:如何关闭 Shiro 以及代码示例
本文将详细介绍 Shiro 的配置过程,包括 ShiroFilterFactoryBean 和 SecurityManager 的设置方法,并提供关闭 Shiro 的具体方法和代码示例,帮助你更好地理解和使用 Shiro 框架。
Shiro 配置代码示例
package com.kj.shiro;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.realm.Realm;
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 java.util.LinkedHashMap;
import java.util.Map;
/**
* @author 破晓
* @date 2022-01-22 22:15
*/
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 设置默认登录的 URL,身份认证失败会访问该 URL
shiroFilterFactoryBean.setLoginUrl("/login");
// 设置成功之后要跳转的链接
shiroFilterFactoryBean.setSuccessUrl("/");
// 设置未授权界面,权限认证失败会访问该 URL
shiroFilterFactoryBean.setUnauthorizedUrl("/unauthorized");
// LinkedHashMap 是有序的,进行顺序拦截器配置
Map<String, String> filterChainMap = new LinkedHashMap<>();
/*
1). anon 可以被匿名访问
2). authc 必须认证(登录)后才可以访问
......
*/
filterChainMap.put("/**","anon");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainMap);
return shiroFilterFactoryBean;
}
@Bean
public SecurityManager securityManager(Realm singleRealm){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(singleRealm);
return securityManager;
}
}
如何关闭 Shiro
要关闭 Shiro,需要进行以下操作:
-
将 ShiroFilterFactoryBean 的 filterChainDefinitionMap 设置为 null 或空 Map:
shiroFilterFactoryBean.setFilterChainDefinitionMap(null); // 或 filterChainDefinitionMap.clear(); -
将 SecurityManager 设置为 null:
shiroFilterFactoryBean.setSecurityManager(null); -
将 ShiroConfig 类所在的包从扫描范围中移除:
这可以通过在 Spring 配置文件中设置
exclude-filter来实现,这样 Shiro 就不会被加载和使用了。<context:component-scan base-package="com.kj.shiro" exclude-filter="org.springframework.context.annotation.ComponentScan.Filter(type=org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE, value=com.kj.shiro.ShiroConfig.class)"/>
通过以上操作,就可以成功关闭 Shiro 框架。
原文地址: https://www.cveoy.top/t/topic/nFaP 著作权归作者所有。请勿转载和采集!