From 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 09 六月 2025 11:54:00 +0800 Subject: [PATCH] 6.9新增登录失败冻结逻辑 --- springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/config/SecurityConfig.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 103 insertions(+), 0 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/config/SecurityConfig.java b/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/config/SecurityConfig.java new file mode 100644 index 0000000..02ad139 --- /dev/null +++ b/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/config/SecurityConfig.java @@ -0,0 +1,103 @@ +package com.panzhihua.auth.config; + +import javax.annotation.Resource; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +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.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import com.panzhihua.auth.handel.AjaxAuthenticationEntryPoint; +import com.panzhihua.auth.handel.UserAuthenticationProvider; +import com.panzhihua.auth.handel.UserLoginFailureHandler; +import com.panzhihua.auth.handel.UserLogoutSuccessHandler; + +/** + * SpringSecurity配置类 + * + * @Author youcong + */ +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + /** + * 自定义登录逻辑验证器 + */ + @Resource + private UserAuthenticationProvider userAuthenticationProvider; + + public static void main(String[] args) { + BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); + String encode = bCryptPasswordEncoder.encode("123456"); + System.out.println(encode); + } + + /** + * 加密方式 + * + * @Author youcong + */ + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() { + return new BCryptPasswordEncoder(); + } + + /** + * 配置登录验证逻辑 + */ + @Override + protected void configure(AuthenticationManagerBuilder auth) { + // 这里可启用我们自己的登陆验证逻辑 + auth.authenticationProvider(userAuthenticationProvider); + } + + /** + * 解决 无法直接注入 AuthenticationManager + * + * @return + * @throws Exception + */ + @Bean + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + /** + * 配置security的控制逻辑 + * + * @Author youcong + * @Param http 请求 + */ + @Override + protected void configure(HttpSecurity http) throws Exception { + + http.authorizeRequests().anyRequest().permitAll().and() + // 配置登录成功自定义处理类 + .formLogin() + // .successHandler(new UserLoginSuccessHandler()) + // 配置登录失败自定义处理类 + .failureHandler(new UserLoginFailureHandler()).and() + // 配置登出地址 + .logout().logoutUrl("/login/userLogout") + // 配置用户登出自定义处理类 + .logoutSuccessHandler(new UserLogoutSuccessHandler()).and() + // 开启跨域 + .cors() + // 异常处理(权限拒绝、登录失效等) + .and().exceptionHandling().authenticationEntryPoint(new AjaxAuthenticationEntryPoint())// 匿名用户访问无权限资源时的异常处理; + .and() + // 取消跨站请求伪造防护 + .csrf().disable(); + // 基于Token不需要session + http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); + // 禁用缓存 + http.headers().cacheControl(); + + } +} -- Gitblit v1.7.1