后端springboot编写登录注册逻辑
时间: 2025-01-21 07:47:10 浏览: 26
### Spring Boot 实现登录和注册功能
在构建基于Spring Boot的应用程序时,实现用户认证(即登录和注册)是一个常见的需求。为了满足这一需求,通常会涉及到几个关键组件和服务。
#### 创建实体类 User
定义 `User` 类来表示用户的属性:
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// Getters and Setters omitted for brevity.
}
```
#### 配置安全设置 SecurityConfig
通过自定义的安全配置文件启用HTTP基本身份验证和其他必要的安全性措施[^1]:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/register", "/login").permitAll() // Allow access to register/login pages without authentication
.anyRequest().authenticated(); // Require authentication for all other requests
http.formLogin();
}
}
```
#### 构建控制器 UserController
创建一个 RESTful API 控制器处理来自客户端的请求,并调用服务层的方法完成业务逻辑操作:
```java
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@Autowired
private UserService userService;
@PostMapping("/signup")
public ResponseEntity<String> signUp(@RequestBody SignUpForm form){
try{
userService.signUp(form.getUsername(),form.getPassword());
return new ResponseEntity<>("Sign up successful.", HttpStatus.CREATED);
}catch (Exception e){
return new ResponseEntity<>(e.getMessage(),HttpStatus.BAD_REQUEST);
}
}
@PostMapping("/signin")
public ResponseEntity<JwtResponse> signIn(@RequestBody SignInForm form, HttpServletResponse response){
JwtResponse jwtResp=userService.signIn(form.getUsername(),form.getPassword());
Cookie cookie=new Cookie("token",jwtResp.getToken());
cookie.setHttpOnly(true);
cookie.setMaxAge(86400 * 7);
response.addCookie(cookie);
return new ResponseEntity<>(jwtResp,HttpStatus.OK);
}
}
```
上述代码片段展示了如何利用Spring框架中的依赖注入特性@Autowired将UserService对象引入到AuthController中以便执行具体的业务方法;同时也说明了当接收到POST类型的/signup或/signin路径下的JSON格式数据体时应采取的动作[^2].
阅读全文
相关推荐


















