
// User实体类
public class User {
private String username;
private String password;
// 其他字段...
}
// 登录请求体
public class LoginRequest {
private String username;
private String password;
}
// 登录控制器
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@Autowired
private UserService userService;
@PostMapping("/login")
public ResponseEntity> login(@RequestBody LoginRequest request) {
User user = userService.findByUsername(request.getUsername());
if (user == null || !userService.checkPassword(request.getPassword(), user.getPassword())) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("用户名或密码错误");
}
String token = JwtUtil.generateToken(user.getUsername());
return ResponseEntity.ok().body(Map.of("token", token));
}
}
// JWT工具类
public class JwtUtil {
private static final String SECRET_KEY = "your-secret-key";
private static final long EXPIRATION_TIME = 86400000; // 24小时
public static String generateToken(String username) {
return Jwts.builder()
.setSubject(username)
.setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
.signWith(SignatureAlgorithm.HS512, SECRET_KEY)
.compact();
}
public static String getUsernameFromToken(String token) {
return Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody()
.getSubject();
}
}
[用户输入用户名和密码] -> [前端发送POST请求到/api/auth/login]
[后端验证用户名和密码] -> [生成JWT Token]
[返回Token给前端] -> [前端存储Token]
[后续请求携带Token] -> [后端验证Token]
[验证通过则返回数据] -> [显示页面内容]
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456"}'
curl -X GET http://localhost:8080/api/user/profile \
-H "Authorization: Bearer your-jwt-token"
本站部分内容及素材来源于互联网,由AI智能生成,如有侵权或言论不当,联系必删!