当前位置: 首页 > wzjs >正文

网站建设所需硬件怎么制作属于自己的网址

网站建设所需硬件,怎么制作属于自己的网址,网件路由器推荐,电子邮箱怎么填写以下是 Spring Security 的核心配置项详解,涵盖认证、授权、过滤器链、HTTP安全设置等关键配置,结合 Spring Boot 3.x 版本最佳实践: 1. 核心注解与配置类 (1) 启动安全配置 // 启动Web安全配置(推荐方式) Configura…

以下是 Spring Security 的核心配置项详解,涵盖认证、授权、过滤器链、HTTP安全设置等关键配置,结合 Spring Boot 3.x 版本最佳实践


1. 核心注解与配置类

(1) 启动安全配置
// 启动Web安全配置(推荐方式)
@Configuration
@EnableWebSecurity  // 启用Web安全配置
public class SecurityConfig {// 定义SecurityFilterChain Bean
}
  • @EnableWebSecurity
    • 启用安全框架,自动配置默认的安全过滤器链。
    • 替代旧版 WebSecurityConfigurerAdapter(已弃用)。

(2) 方法级安全
// 启用方法注解(如@PreAuthorize)
@EnableMethodSecurity  // Spring Security 5.7+ 版本
public class MethodSecurityConfig {
}
  • @EnableMethodSecurity
    • 支持 @PreAuthorize@PostFilter@Secured 等注解,实现方法级权限控制。

2. 安全过滤器链(SecurityFilterChain)

(1) 基础配置
@Configuration
public class SecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http// 配置HTTP安全选项.authorizeRequests(authz -> authz.antMatchers("/public/**").permitAll()    // 公开接口.antMatchers("/admin/**").hasRole("ADMIN") // 需ADMIN角色.anyRequest().authenticated()             // 其他接口需认证).formLogin()  // 启用表单登录.httpBasic()  // 启用HTTP Basic认证.csrf(csrf -> csrf.disable()); // 禁用CSRF(测试环境)return http.build();}
}

(2) 关键配置项详解
配置项作用代码示例
authorizeRequests定义URL权限规则.antMatchers("/api/**").authenticated()
formLogin配置表单登录.formLogin().loginPage("/login").permitAll()
httpBasic启用HTTP Basic认证.httpBasic().disable()
csrf配置CSRF防护.csrf().disable().csrf().requireCsrfProtectionMatcher(...)
rememberMe启用“记住我”功能.rememberMe().key("uniqueKey").tokenValiditySeconds(86400)
logout配置退出登录.logout().logoutUrl("/logout").logoutSuccessUrl("/")
sessionManagement会话管理(如会话固定、超时).sessionManagement().maximumSessions(1)
oauth2Login配置OAuth2登录.oauth2Login().loginPage("/login").defaultSuccessUrl("/home")
securityContext安全上下文配置(如会话持久化).securityContext().requireExplicitSave()

3. 认证配置

(1) 用户认证源
// 内存用户配置
@Bean
public InMemoryUserDetailsManager userDetailsService() {return new InMemoryUserDetailsManager(User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build());
}
(2) 自定义用户DetailsService
@Service
public class DatabaseUserDetailsService implements UserDetailsService {@Overridepublic UserDetails loadUserByUsername(String username) {// 从数据库加载用户User user = userRepository.findByUsername(username);return new org.springframework.security.core.userdetails.User(user.getUsername(),user.getPassword(),AuthorityUtils.createAuthorityList(user.getRoles()));}
}
(3) 密码编码器
@Bean
public PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();
}

4. 过滤器与拦截器

(1) 自定义Filter
@Component
public class CustomFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 自定义逻辑(如Token解析)chain.doFilter(request, response);}
}// 注册到FilterChain
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) {http.addFilterBefore(new CustomFilter(), UsernamePasswordAuthenticationFilter.class);return http.build();
}
(2) 过滤器顺序

Spring Security 默认过滤器顺序(部分关键Filter):

  1. ChannelProcessingFilter:处理协议强制(如HTTPS)。
  2. WebAsyncManagerIntegrationFilter:处理异步请求。
  3. SecurityContextPersistenceFilter:保存/恢复安全上下文。
  4. HeaderWriterFilter:添加安全头(如X-Content-Type-Options)。
  5. CsrfFilter:处理CSRF令牌。
  6. LogoutFilter:处理退出请求。
  7. UsernamePasswordAuthenticationFilter:表单登录认证。
  8. OAuth2LoginAuthenticationFilter:OAuth2登录认证。

5. 异常处理

(1) 未认证处理
@Bean
public AuthenticationEntryPoint authenticationEntryPoint() {return (request, response, authException) ->response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "未认证");
}
(2) 无权限处理
@Bean
public AccessDeniedHandler accessDeniedHandler() {return (request, response, accessDeniedException) ->response.sendError(HttpServletResponse.SC_FORBIDDEN, "无权限");
}

6. 高级配置

(1) OAuth2资源服务器
@Configuration
public class OAuth2Config {@Beanpublic SecurityFilterChain resourceServerSecurityFilterChain(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/api/**").authenticated().and().oauth2ResourceServer().jwt(); // 启用JWT解析return http.build();}
}
(2) 动态权限(ABAC)
// 自定义权限表达式
@Configuration
@EnableMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {@Overrideprotected MethodSecurityExpressionHandler createExpressionHandler() {DefaultMethodSecurityExpressionHandler handler = new DefaultMethodSecurityExpressionHandler();handler.setPermissionEvaluator(new CustomPermissionEvaluator());return handler;}
}

7. 关键配置总结表格

配置类型配置项作用代码示例
认证userDetailsService定义用户信息来源(数据库/内存)@Bean DatabaseUserDetailsService
密码passwordEncoder密码编码器(如BCrypt)@Bean BCryptPasswordEncoder()
HTTP安全authorizeRequests定义URL权限规则.antMatchers("/api/**").hasRole("USER")
登录formLogin表单登录配置.formLogin().loginPage("/login")
退出logout退出登录配置.logout().logoutUrl("/logout")
CSRFcsrf开启/禁用CSRF防护.csrf().disable()
会话管理sessionManagement会话超时、并发控制.sessionManagement().invalidSessionUrl("/login")
OAuth2登录oauth2Login配置OAuth2登录(如Google、GitHub).oauth2Login().clientId("your-client-id")
方法级安全@EnableMethodSecurity启用方法注解(@PreAuthorize@EnableMethodSecurity(prePostEnabled = true)
自定义FilteraddFilterBefore/After注册自定义Filter到FilterChainhttp.addFilterBefore(new CustomFilter(), UsernamePasswordAuthenticationFilter.class)

8. 常见问题与解决

  1. 随机生成密码问题

    • 日志:Using generated security password:
    • 解决:添加 management.security.enabled=false 禁用默认安全配置。
  2. CSRF跨域问题

    • 在前端请求头中添加 X-XSRF-TOKENCookie
  3. JWT Token配置

    • 需添加 spring-boot-starter-oauth2-resource-server 依赖,并配置密钥。

9. 总结

Spring Security 的配置项覆盖了从 认证、授权、过滤器链高级安全策略 的所有场景,核心是通过 SecurityFilterChain 定义安全规则。在 Spring Boot 3.x 中,需避免使用已弃用的 WebSecurityConfigurerAdapter,转而直接创建 SecurityFilterChain Bean。通过灵活组合配置项,可满足从简单到复杂的系统安全需求。

http://www.dtcms.com/wzjs/375135.html

相关文章:

  • 最权威的做网站设计公司价格百度关键词权重查询
  • 做网站和游戏是如何赚钱seo招聘网
  • 网站优化的目的百度推广官网入口
  • wordpress给文章增加标签北京网站seowyhseo
  • 做网站公司哪家比较好济南网站优化排名
  • 网站怎么查哪家公司做的中国seo
  • 做批发的网站万网官网
  • c 手机网站开发深圳网络推广解决方案
  • 详情页设计素材沧州网站seo
  • css 做网站百度标记号码认证平台
  • wordpress gdseo搜索优化推广
  • 海南行指海口网站开发网络营销推广要求
  • 自己做网站如何赚钱吗长沙百度快速排名
  • wordpress安装文件是哪个安全优化大师下载
  • 学做标书网站网站关键词收录查询
  • 做一个普通网站多少钱北京网站优化体验
  • 怎么做影视类网站免费crm网站不用下载的软件
  • 网站底色图片免费产品推广网站
  • 网站建设方为客户提供使用说明书微信营销软件手机版
  • 国家企业信用系统杭州网络优化公司排名
  • 有路由器做网站如何获取热搜关键词
  • 济南比较好的网站建设公司痘痘怎么去除有效果
  • 怎么做网站维护宣传深圳网络推广哪家比较好
  • 怎么做网站生意线上宣传渠道有哪些
  • 个人域名用来做淘宝客网站引流推广
  • 龙湖镇华南城网站建设百度竞价排名是什么意思
  • 卫浴毛巾架网站建设seo教程seo教程
  • 有哪些做婚品的网站郑州网络推广效果
  • 苏州手机网站设计站长工具友链查询
  • 小型网站开发时间周期深圳网站开发制作