**
Shiro框架的认证拦截实现
这篇博客是关于使用shiro框架实现用户未登录的状态下跳转到登录页面提示其登录
shiro框架简介
Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。
详细架构
- Subject(主体):与软件交互的一个特定的实体(用户、第三方服务等)。
- SecurityManager(安全管理器) :Shiro 的核心,用来协调管理组件工作。
- Authenticator(认证管理器):负责执行认证操作。
- Authorizer(授权管理器):负责授权检测。
- SessionManager(会话管理):负责创建并管理用户 Session 生命周期,提供一个强有力的 Session 体验
- SessionDAO:代表 SessionManager 执行 Session持久(CRUD)动作。
- CacheManager(缓存管理器):提供创建缓存实例和管理缓存生命周期的功能。
- Cryptography(加密管理器):提供了加密方式的设计及管理。
- Realms(领域对象):是shiro和你的应用程序安全数据之间的桥梁。
添加shiro依赖
当前最新版的shiro框架依赖,也可自己去依赖查询官网选择需要的版本
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.1</version>
</dependency>
Shiro核心对象配置
第一步:创建Shiro的配置类,下面以SpringShiroConfig为例。
/**
* @Configuration 注解描述的类为一个配置对象,
* 此对象也会交给spring管理
*/
@Configuration //bean
public class SpringShiroConfig {
}
第二步:在Shiro配置类中添加SecurityManager配置,关键代码如下:
@Bean
public SecurityManager securityManager() {
DefaultWebSecurityManager sManager=
new DefaultWebSecurityManager();
return sManager;
}
第三步: 在Shiro配置类中添加ShiroFilterFactoryBean对象的配置。通过此对象设置资源匿名访问、认证访问。关键代码如下:
@Bean
public ShiroFilterFactoryBean shiroFilterFactory (
SecurityManager securityManager) {
ShiroFilterFactoryBean sfBean=
new ShiroFilterFactoryBean();
sfBean.setSecurityManager(securityManager);
//定义拦截跳转页面到的操作前提,Controller层中有跳转登录页面的操作(SSM内容不做过多说明)
sfBean.setLoginUrl("/doLoginUI");
//定义map指定请求过滤规则(哪些资源允许匿名访问,哪些必须认证访问)
LinkedHashMap<String,String> map=
new LinkedHashMap<>();
//静态资源允许匿名访问:"anon",如果有多个可以多些几个
map.put("/静态文件路径","anon");
//除了匿名访问的资源,其它都要认证("authc")后访问
map.put("/**","authc");
sfBean.setFilterChainDefinitionMap(map);
return sfBean;
}
结束语
本来想陈述shiro框架认证、授权和缓存等更多操作的,由于是第一次写博客,可能还存在许多问题,所以只写了shiro框架的验证登录操作,有时间的话会更新更多shiro框架的内容,希望能帮助需要了解shiro框架的人,当然以后还会写一写更多关于java编程技术的内容。