springsecurity 登录注册代码
时间: 2023-06-18 18:01:55 浏览: 271
Spring Security基于json登录实现过程详解
Spring Security 是 Spring 框架的一个模块,提供了一套 Web 应用安全性的完整解决方案。它可以用来保护 Web 应用中的 URL、防止 CSRF 攻击、防止 XSS 攻击等。下面是一个简单的 Spring Security 的登录注册代码示例。
1. 添加 Spring Security 依赖
在 `pom.xml` 文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 配置 Spring Security
在 Spring Boot 应用中,可以通过在 `application.properties` 文件中添加以下配置来配置 Spring Security:
```
# 配置登录页面的 URL
spring.security.form-login.login-page=/login
# 配置处理登录请求的 URL
spring.security.form-login.login-processing-url=/doLogin
# 配置登录成功后跳转的 URL
spring.security.form-login.default-success-url=/index
# 配置登录失败后跳转的 URL
spring.security.form-login.failure-url=/login?error=true
# 配置退出登录的 URL
spring.security.logout.logout-url=/logout
# 配置退出登录后跳转的 URL
spring.security.logout.logout-success-url=/
```
3. 编写登录页面
在 Spring Security 中,可以使用 Thymeleaf 模板引擎来渲染页面。在 `src/main/resources/templates` 目录下创建一个名为 `login.html` 的文件,添加以下代码:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form th:action="@{/doLogin}" method="post">
<label>Username:</label>
<input type="text" name="username" />
<br/>
<label>Password:</label>
<input type="password" name="password" />
<br/>
<input type="submit" value="Login" />
</form>
</body>
</html>
```
4. 编写安全配置类
创建一个类 `SecurityConfig` 用于配置 Spring Security,添加以下代码:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login", "/doLogin").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").loginProcessingUrl("/doLogin")
.defaultSuccessUrl("/index").failureUrl("/login?error=true")
.and()
.logout().logoutUrl("/logout").logoutSuccessUrl("/");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER")
.and()
.withUser("admin").password("{noop}password").roles("ADMIN");
}
}
```
上述代码中,`configure()` 方法用于配置拦截规则和登录设置,`configureGlobal()` 方法用于配置用户信息。其中,使用 `inMemoryAuthentication()` 方法来配置用户信息,也可以在这里配置数据库等其他认证方式。
5. 编写注册页面
在 `src/main/resources/templates` 目录下创建一个名为 `register.html` 的文件,添加以下代码:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<h1>Register</h1>
<form th:action="@{/register}" method="post">
<label>Username:</label>
<input type="text" name="username" />
<br/>
<label>Password:</label>
<input type="password" name="password" />
<br/>
<input type="submit" value="Register" />
</form>
</body>
</html>
```
6. 编写注册控制器
创建一个名为 `RegisterController` 的控制器类,添加以下代码:
```java
@Controller
public class RegisterController {
@GetMapping("/register")
public String showRegistrationForm() {
return "register";
}
@PostMapping("/register")
public String registerUserAccount(@ModelAttribute("user") UserDto userDto) {
// TODO: 注册用户
return "redirect:/login?success=true";
}
}
```
在 `showRegistrationForm()` 方法中返回 `register` 页面,`registerUserAccount()` 方法用于接收注册请求并处理注册逻辑。
7. 添加注册链接
在登录页面中添加注册链接,可以通过在 `login.html` 文件中添加以下代码实现:
```html
<a th:href="@{/register}">Register</a>
```
至此,一个简单的 Spring Security 的登录注册代码示例就完成了。
阅读全文