SpringBoot集成SpringSecurity(一、初体验)

本文介绍了SpringBoot集成SpringSecurity的初步体验,包括添加依赖、实现基本的登录功能和配置文件设置。通过默认配置,系统展示了SpringSecurity的登录页面,并解释了实际项目中如何避免默认用户名和随机密码。同时,文章还提到了在配置文件中自定义用户密码的方法。

前言

安全不管是生活中,还是工作中,都是尤为重要的。在大数据时代下,有些信息我们可以公开,而有些数据并不想公开,那么在项目开发过程中,系统如何保证它的安全性了?SpringSecurity就是专门为保证系统安全性而开发的,接下来介绍如何使用SpringSecurity

依赖

SpringBoot集成SpringSecurity也非常简单,只需要引入下面依赖即可

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring
### Spring Boot 集成 Spring Security 示例教程 在现代 Web 应用开发中,安全性是至关重要的。Spring Boot 提供了与 Spring Security 的无缝集成,简化了安全功能的实现。以下是个完整的示例教程,展示如何在 Spring Boot 项目中集成 Spring Security。 #### 1. 添加依赖 首先,在 `pom.xml` 文件中添加 Spring Security 的依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 此依赖将自动配置 Spring Security 的基本功能[^2]。 #### 2. 创建安全配置类 接下来,创建个配置类以定义应用程序的安全策略。在 Spring Boot 3 中,`WebSecurityConfigurerAdapter` 已被废弃,因此需要使用 Java 配置类来替代。以下是个示例: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(authorize -> authorize .requestMatchers("/").permitAll() // 允许所有用户访问首页 .anyRequest().authenticated()) // 其他请求需要认证 .formLogin(formLogin -> formLogin .loginPage("/login") // 定制登录页 .permitAll()) .logout(logout -> logout.permitAll()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } } ``` 上述代码实现了以下功能: - 定义了 `/` 路径对所有用户开放。 - 其他路径需要经过身份验证才能访问。 - 提供了个自定义的登录页面 `/login`。 - 使用内存中的用户信息进行身份验证[^3]。 #### 3. 创建登录页面 为了提供更好的用户体验,可以创建个简单的 HTML 登录页面。在 `src/main/resources/templates/` 目录下创建个 `login.html` 文件: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Login</title> </head> <body> <h1>Login</h1> <form method="post" action="/login"> <div> <label for="username">Username:</label> <input type="text" id="username" name="username"/> </div> <div> <label for="password">Password:</label> <input type="password" id="password" name="password"/> </div> <button type="submit">Login</button> </form> </body> </html> ``` 此页面使用 Thymeleaf 模板引擎渲染,并提交表单到 `/login` 路径[^3]。 #### 4. 启动应用程序 完成以上步骤后,启动 Spring Boot 应用程序。访问根路径 `/` 将显示允许访问的内容,而尝试访问其他路径时会重定向到登录页面。 --- ### 注意事项 - 在生产环境中,应避免使用内存中的用户存储,而是连接到数据库或 LDAP 等外部身份验证源。 - 推荐使用更强大的密码编码器(如 BCrypt)代替默认的密码编码器[^1]。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值