springboot controller实现用户的登录与登出
时间: 2023-12-12 10:02:37 浏览: 48
在 Spring Boot 中实现用户的登录与登出,可以采用 Spring Security 框架,它提供了一系列的认证和授权功能,可以方便地实现用户的登录和登出。
以下是一个示例代码:
```java
@RestController
public class UserController {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private JwtUtil jwtUtil;
@Autowired
private UserDetailsService userDetailsService;
@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody UserLoginRequest userLoginRequest) throws Exception {
try {
authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(userLoginRequest.getUsername(), userLoginRequest.getPassword())
);
} catch (BadCredentialsException e) {
throw new Exception("Incorrect username or password", e);
}
final UserDetails userDetails = userDetailsService.loadUserByUsername(userLoginRequest.getUsername());
final String jwt = jwtUtil.generateToken(userDetails);
return ResponseEntity.ok(new UserLoginResponse(jwt));
}
@PostMapping("/logout")
public ResponseEntity<?> logout() {
// TODO: 实现用户登出逻辑
return ResponseEntity.ok(new ApiResponse(true, "Successfully logged out"));
}
}
```
在以上的代码中,我们使用了 @PostMapping 注解来定义了两个接口:login 和 logout,分别用于用户的登录和登出。
在 login 接口中,我们使用了 AuthenticationManager 对用户进行身份认证,如果认证成功,则生成一个 JWT Token 并返回给客户端。
在 logout 接口中,我们可以自定义实现用户的登出逻辑。
需要注意的是,在以上代码中,我们使用了 JwtUtil 和 UserDetailsService,它们是需要自己实现的。JwtUtil 用于生成和解析 JWT Token,而 UserDetailsService 用于从数据库或其他数据源中获取用户信息。