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

什么网站可以做装修效果图的百度信息流投放技巧

什么网站可以做装修效果图的,百度信息流投放技巧,制作广告,宁波高端网站制作公司一、Spring Security 简介 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,用于保护 Java 应用程序,尤其是基于 Spring 的应用。它构建在 Spring 框架之上,能够轻松地集成到基于 Spring 的应用程序中,包括…

Spring Security 安全框架

一、Spring Security 简介

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,用于保护 Java 应用程序,尤其是基于 Spring 的应用。它构建在 Spring 框架之上,能够轻松地集成到基于 Spring 的应用程序中,包括 Spring Boot 应用。

Spring Security 提供了以下核心功能:

  • 认证(Authentication) :确认用户身份的过程。支持多种认证方式,如基于表单的认证、HTTP 基本认证、基于 Token 的认证(如 JWT - JSON Web Tokens)等。
  • 授权(Authorization) :确定已认证用户是否有权访问特定资源。通过定义访问规则来实现,例如基于角色(如管理员、普通用户)或权限(如读取权限、写入权限)的访问控制。
  • 防止常见攻击 :提供了内置的 CSRF(跨站请求伪造)保护、XSS(跨站脚本攻击)保护、SQL 注入防护、点击劫持防护等功能。

二、Spring Security 的基本架构

Spring Security 通过一系列的过滤器(Filter)来实现其安全功能。这些过滤器构成了 Spring Security 的核心架构,主要的过滤器包括:

  • CsrfFilter :用于防止跨站点请求伪造攻击。
  • BasicAuthenticationFilter :支持 HTTP 的标准 Basic Auth 的身份验证模块。
  • UsernamePasswordAuthenticationFilter :支持 Form 表单形式的身份验证模块。
  • DefaultLoginPageGeneratingFilter 和 DefaultLogoutPageGeneratingFilter :用于自动生成登录页面和注销页面。
  • AuthorizationFilter :负责授权模块。

这些过滤器通过 FilterChainProxy 进行管理,FilterChainProxy 会根据匹配规则(如 URL 匹配)决定使用哪个 SecurityFilterChain。而 SecurityFilterChain 又由零到多个 Filter 组成,这些 Filter 完成实际的安全功能。

三、Spring Security 的配置

1. 添加依赖

在 Spring Boot 项目中,只需添加 Spring Security 的启动器依赖,Spring Boot 会自动配置基本的 Spring Security 功能:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

添加依赖后,Spring Boot 会自动配置一个默认的用户(用户名是 “user”)和一个随机生成的密码,应用启动时会在控制台打印出来。

2. 基本配置

可以通过在 application.propertiesapplication.yml 文件中进行一些基本配置,如设置默认的用户名、密码和角色:

spring.security.user.name=admin
spring.security.user.password=admin123
spring.security.user.roles=ADMIN
3. 自定义配置

通过创建一个配置类来实现更复杂的 Spring Security 配置:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration {@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests((authz) -> authz.requestMatchers("/user/login").anonymous().requestMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated()).formLogin(Customizer.withDefaults()).httpBasic(Customizer.withDefaults());return http.build();}
}

在上述配置中:

  • authorizeHttpRequests 用于定义请求的授权规则。这里配置了 /user/login 路径允许匿名访问,/admin/** 路径只有具有 ADMIN 角色的用户才能访问,其他所有请求都需要经过身份验证。
  • formLogin 启用了基于表单的登录功能。
  • httpBasic 启用了 HTTP 基本认证功能。

四、用户认证与授权

1. 自定义用户认证

可以通过创建一个自定义的 UserDetailsService 类来实现用户认证:

@Service
public class UserDetailsServiceImpl implements UserDetailsService {@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {// 根据用户名从数据库或其他存储中获取用户信息if ("admin".equals(username)) {return User.builder().username("admin").password("{noop}admin123").roles("ADMIN").build();} else {throw new UsernameNotFoundException("User not found");}}
}

然后在配置类中注入自定义的 UserDetailsService,并配置认证管理器:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate UserDetailsService userDetailsService;@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService);}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated().and().formLogin().and().logout().logoutUrl("/logout").invalidateHttpSession(true).deleteCookies("JSESSIONID");}
}
2. 角色权限访问

在控制器中定义一个 Admin 资源类,只有 admin 用户才能进行访问:

@RequestMapping("admin")
@RestController
public class AdminController {@GetMapping("resourse")public String AdminRole(){return "这是只有管理员用户才能访问的资源";}
}

五、密码加密

Spring Security 提供了多种密码编码器,如 BCryptPasswordEncoder,用于对用户密码进行加密存储。

在配置类中使用 BCryptPasswordEncoder

@Configuration
@EnableWebSecurity
public class SecurityConfiguration {@Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests((authz) -> authz.requestMatchers("/user/login").anonymous().requestMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated()).httpBasic(Customizer.withDefaults());return http.build();}
}

可以创建一个测试类,将所有用户的密码改为 BCrypt 加密后的数据:

@Test
public void testUpdateAllPasswords() {BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();String encodedPassword = encoder.encode("123456");LambdaUpdateWrapper<Users> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.set(Users::getPassword, encodedPassword);boolean result = usersMapper.update(null, updateWrapper) > 0;if (result) {System.out.println("所有用户的密码更新成功!");} else {System.out.println("密码更新失败!");}
}

六、高级安全配置

1. 跨域资源共享(CORS)

当应用需要从不同的域访问资源时,需要配置 CORS:

http.cors().configurationSource(corsConfigurationSource()).and().authorizeRequests()// 其他配置
;private CorsConfigurationSource corsConfigurationSource() {CorsConfiguration configuration = new CorsConfiguration();configuration.addAllowedOrigin("*");configuration.addAllowedMethod("*");configuration.addAllowedHeader("*");UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", configuration);return source;
}

这个配置允许来自任何源的请求,任何 HTTP 方法和任何请求头,在开发环境中比较方便,但在生产环境中可能需要更严格的限制。

2. Remember - Me 功能

Spring Security 的 Remember - Me 功能允许用户在关闭浏览器并重新打开后,仍然保持登录状态。通过在用户登录成功后,在客户端(浏览器)存储一个加密的 Cookie 来实现。在后续的请求中,Spring Security 会检查这个 Cookie 来自动认证用户。可以在 Spring Security 配置中添加如下内容:

http.rememberMe().tokenValiditySeconds(86400).key("myRememberMeKey");

这里设置了 Remember - Me 令牌的有效期为 86400 秒(一天),并指定了一个密钥用于加密和解密 Cookie。

七、总结

Spring Security 是 Spring 生态系统中的重要组成部分,提供了全面的安全功能,包括身份验证、授权、防止常见攻击等。通过集成到 Spring Boot 应用中,可以快速实现安全配置,保护应用程序的数据和资源安全。掌握 Spring Security 的基本配置、用户认证与授权、密码加密以及高级安全配置等内容,是构建安全可靠的 Spring 应用的关键。

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

相关文章:

  • 做团建活动网站优化分析
  • 网站开发招聘年薪竞价推广是什么意思
  • 支付网站开发费可以做无形资产十大跨境电商erp排名
  • 惠州市企业网站seo营销工具app拉新推广平台有哪些
  • 长沙3合1网站建设价格如何制作自己的网址
  • 男的和女的做那种短视频网站seo黑帽技术有哪些
  • 蓬莱网站建设公司报价北京百度快速排名
  • 巴彦淖尔网站制作关键词优化公司排行
  • 风中有朵雨做的云网站观看品牌管理
  • 成华区统一建设办公室网站下载百度app最新版到桌面
  • 房地产网站建设案例软文广告经典案例分析
  • 如何介绍一个网站的促销功能象山seo外包服务优化
  • 做网站需求报告在线资源搜索引擎
  • 能上国外网站的免费dns百度入口
  • 做百度网站要注意什么网络营销策划书案例
  • 专业的医疗网站建设seo策划
  • 衡水做网站开发的浏览器地址栏怎么打开
  • 珠海本地网站西安百度推广开户运营
  • 用dw做旅游的网站的设计seo的优点和缺点
  • 重庆网站推广计划竞价托管公司
  • 网站群建设项目招标公告免费网站建站2773
  • 给别人建网站工作行吗国内重大新闻10条
  • 凡科建站骗局厦门百度seo点击软件
  • 东莞网站开发哪里找互联网公司排名
  • c 语言可以做网站吗东莞关键词seo
  • wordpress文档分类和标签消失关键词优化是怎么弄的
  • 北京今日确诊病例轨迹公布网站优化排名操作
  • 乐清建网站网络营销案例分析报告
  • 淮南网官方网站如何自己制作网站
  • 滨海新区建设和交通局网站解析域名网站