shiro框架 01.使用shiro框架进行认证拦截(也就是进行url访问时候的拦截)

文章讲述了如何在SpringBoot项目中使用Shiro框架进行URL安全拦截。首先,需要在pom.xml添加Shiro的依赖。接着,配置Shiro的核心对象SecurityManager和ShiroFilterFactoryBean,设置资源的匿名访问和认证访问规则。当请求被拦截时,未认证的请求会被重定向到登录页面。最后,文章提到了客户端登录页面的实现,以及在控制器中如何呈现登录页面。
摘要由CSDN通过智能技术生成

当你访问这个项目的url时候,会有拦截功能,也就是不可以随意地去访问项目的url,拦截后的请求会被重定向到开始的登录界面。
操作:
01.需要添加依赖
在springboot项目中,使用shiro框架需要在pom.xml文件中去添加依赖:

  	<dependency>
	   <groupId>org.apache.shiro</groupId>
	   <artifactId>shiro-spring</artifactId>
	   <version>1.4.1</version>
	</dependency>

02.shiro核心对象配置
这里需要配置一个配置类,使用的注解是@Configuration,这表示修饰的类会有多个注解@bean来修饰的方法,而@bean修饰的方法通常用于构造一个对象,并且交给spring容器进行
第一步:创建 SpringShiroConfig 类。关键代码如下:

	package com.cy.pj.common.config;
	/**@Configuration 注解描述的类为一个配置对象,
	 * 此对象也会交给 spring 管理
	 */
	@Configuration
	public class SpringShiroConfig {//spring-shiro.xml
	
	}

第二步:在 Shiro 配置类中添加 SecurityManager 配置,SecurityManager是shiro框架的核心。关键代码如下:

@Bean
public SecurityManager securityManager() {
    //SecurityManager是一个接口
    DefaultWebSecurityManager sManager=new DefaultWebSecurityManager();
    return sManager;
}

第三步:在 Shiro 配置类中添加 ShiroFilterFactoryBean 对象的配置。通过此对象设置资源匿名访问、认证访问。关键代码如下:

/**
 * 配置 ShiroFilterFactoryBean 对象
 * 基于此对象创建过滤器工厂,通过过滤器工厂创建过滤器,通过过滤器对请求过滤
 * @param securityManager
 * @return
 */
@Bean
public ShiroFilterFactoryBean shiroFilterFactory (SecurityManager securityManager) {
    ShiroFilterFactoryBean sfBean=new ShiroFilterFactoryBean();
    //设置安全管理器
    sfBean.setSecurityManager(securityManager);
   
    //定义 map 指定请求过滤规则(哪些资源允许匿名访问,哪些必须认证访问)
    LinkedHashMap<String,String> map= new LinkedHashMap<>();
    //静态资源允许匿名访问:"anon",也就是白名单
    map.put("/bower_components/**","anon");
    map.put("/build/**","anon");
    map.put("/dist/**","anon");
    map.put("/plugins/**","anon");
    //除了匿名访问的资源,其它都要认证("authc")后访问
    map.put("/**","authc");
    sfBean.setFilterChainDefinitionMap(map);
    return sfBean;
}

/bower_components/**
/build/**
/dist/**
/plugins/**
都是src/resource下的资源
在这里插入图片描述
具体流程:

在这里插入图片描述

Shiro 登陆页面呈现
第一步:服务端 Controller 实现
业务描述及设计实现
当服务端拦截到用户请求以后,判定此请求是否已经被认证(也就是在map中的put时候anno的url),假如没有认证应该先跳转到登录页面。
第一步:在 PageController 中添加一个呈现登录页面的方法,关键代码如下:

@RequestMapping("doLoginUI")
	public String doLoginUI(){
	                return "login";
	}

第二步:修改 SpringShiroConfig 类中 shiroFilterFactorybean 的配置,添加登陆 url 的设置。关键代码见 sfBean.setLoginUrl(“/doLoginUI”)部分。(这里表示的是拦截后重定向的url地址)

	/**
 * 配置 ShiroFilterFactoryBean 对象
 * 基于此对象创建过滤器工厂,通过过滤器工厂创建过滤器,通过过滤器对请求过滤
 * @param securityManager
 * @return
 */
@Bean
public ShiroFilterFactoryBean shiroFilterFactory (SecurityManager securityManager) {
    ShiroFilterFactoryBean sfBean=new ShiroFilterFactoryBean();
    //设置安全管理器
    sfBean.setSecurityManager(securityManager);
    //设置登陆页面
    sfBean.setLoginUrl("/doLoginUI");
    //定义 map 指定请求过滤规则(哪些资源允许匿名访问,哪些必须认证访问)
    LinkedHashMap<String,String> map= new LinkedHashMap<>();
    //静态资源允许匿名访问:"anon"
    map.put("/bower_components/**","anon");
    map.put("/build/**","anon");
    map.put("/dist/**","anon");
    map.put("/plugins/**","anon");
    //除了匿名访问的资源,其它都要认证("authc")后访问
    map.put("/**","authc");
    sfBean.setFilterChainDefinitionMap(map);
    return sfBean;
}

客户端页面实现

业务描述及设计实现。
在/templates/pages/添加一个 login.html 页面,然后将项目部署到 web 服务器,并启动测试运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值