您的位置:首页 > 游戏 > 手游 > 上海建设网站公司_游族网络公司最新消息_永久免费自助建站软件_国内产女装一线二线品牌知乎

上海建设网站公司_游族网络公司最新消息_永久免费自助建站软件_国内产女装一线二线品牌知乎

2025/1/4 15:46:59 来源:https://blog.csdn.net/pan_junbiao/article/details/144793177  浏览:    关键词:上海建设网站公司_游族网络公司最新消息_永久免费自助建站软件_国内产女装一线二线品牌知乎
上海建设网站公司_游族网络公司最新消息_永久免费自助建站软件_国内产女装一线二线品牌知乎

关于 Spring Security 框架中的过滤器的使用方法,系列文章:

《SpringSecurity中的过滤器链与自定义过滤器》

《SpringSecurity使用过滤器实现图形验证码》

1、图形验证码的作用

图形验证码(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart)是一种用于区分用户是人类还是计算机程序的自动化测试。它通常用于防止自动化软件(如机器人或爬虫程序)进行恶意操作,如滥用在线服务、暴力破解密码或进行垃圾邮件发送等。

图形验证码的工作原理基于一个假设:计算机程序难以自动识别和处理复杂的图像或模式,而人类则相对容易。因此,图形验证码通常包含扭曲的文字、数字、图像或它们的组合,这些元素对人类来说相对容易辨认,但对计算机程序来说则非常困难。

下面将介绍 Spring Boot 整合 Spring Security 实现图形验证码功能,执行结果如下如:

(1)登录页面

(2)登录成功后,跳转至首页

2、创建项目

【示例】SpringBoot 整合 SpringSecurity  使用过滤器实现图形验证码功能。

 关于 Spring Security 中过滤器的使用方法,请求点击并浏览本博客的文章:《SpringSecurity中的过滤器链与自定义过滤器》

2.1 创建 Spring Boot 项目

创建 SpringBoot 项目,项目结构如下图:

2.2 添加 Maven 依赖

在 pom.xml 配置文件中添加 Spring Security、谷歌 Kaptcha 图形验证码。

<!-- Spring Security 依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>2.7.18</version>
</dependency><!-- 谷歌 Kaptcha 图形验证码 -->
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>

3、整合 Spring Security 框架实现认证与授权

3.1 配置类(Config 层)

创建 WebSecurityConfig 类(Spring Security 配置类),并添加 @EnableWebSecurity 注解和继承 WebSecurityConfigurerAdapter 类。

package com.pjb.securitydemo.config;import com.pjb.securitydemo.filter.VerificationCodeFilter;
import com.pjb.securitydemo.handler.LoginFailureHandler;
import com.pjb.securitydemo.handler.LoginSuccessHandler;
import com.pjb.securitydemo.handler.PermissionDeniedHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;/*** Spring Security 配置类* @author pan_junbiao**/
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{@Autowiredprivate LoginSuccessHandler loginSuccessHandler;@Autowiredprivate LoginFailureHandler loginFailureHandler;@Autowiredprivate PermissionDeniedHandler permissionDeniedHandler;@Overrideprotected void configure(HttpSecurity http) throws Exception{http.authorizeRequests() //返回一个URL拦截注册器.antMatchers("/captcha.jpg").permitAll() //公开其权限.anyRequest() //匹配所有的请求.authenticated() //所有匹配的URL都需要被认证才能访问.and() //结束当前标签,让上下文回到 HttpSecurity.formLogin() //启动表单认证.loginPage("/myLogin.html") //自定义登录页面.loginProcessingUrl("/auth/form") //指定处理登录请求路径.permitAll() //使登录页面不设限访问//.defaultSuccessUrl("/index") //登录认证成功后的跳转页面.successHandler(loginSuccessHandler) /

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com