springboot登录接口返回token
时间: 2023-08-28 19:05:25 浏览: 89
好的,你可以按照以下步骤来实现:
1. 首先需要在pom.xml文件中添加依赖,如下所示:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 然后在application.properties文件中添加以下配置:
```
spring.security.user.name=admin
spring.security.user.password=admin
spring.security.user.roles=ADMIN
```
3. 创建一个UserDetailsService接口的实现类,用于获取用户信息并进行验证。
4. 创建一个JwtTokenUtil类,用于生成token。
5. 创建一个AuthenticationController类,用于处理登录请求,代码如下:
```
@RestController
@RequestMapping("/auth")
public class AuthenticationController {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private JwtTokenUtil jwtTokenUtil;
@Autowired
private UserDetailsService userDetailsService;
@PostMapping("/login")
public ResponseEntity<?> createAuthenticationToken(@RequestBody AuthenticationRequest authenticationRequest) throws AuthenticationException {
// 验证用户名和密码
final Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(
authenticationRequest.getUsername(),
authenticationRequest.getPassword()
)
);
SecurityContextHolder.getContext().setAuthentication(authentication);
// 生成token
final UserDetails userDetails = userDetailsService
.loadUserByUsername(authenticationRequest.getUsername());
final String token = jwtTokenUtil.generateToken(userDetails);
// 返回token
return ResponseEntity.ok(new AuthenticationResponse(token));
}
}
```
以上就是将用户的登录请求发送到“/auth/login”端点的代码,如果用户名和密码验证成功,则会生成一个JWT token并作为响应返回。
需要注意的是,jwtTokenUtil和userDetailsService的实现需要自己实现。
阅读全文