在Spring Boot中實現token驗證可以通過以下幾個步驟:
生成Token:當用戶登錄成功后,根據用戶的身份信息生成一個Token,并將Token返回給客戶端。
驗證Token:客戶端在每次請求API時,將Token放入請求頭中,在服務端中校驗Token的合法性。
定義一個Token驗證的過濾器:在過濾器中對請求頭中的Token進行校驗,判斷Token的合法性。
添加一個Token驗證的注解:在需要驗證用戶身份的Controller方法上加上該注解,只有在Token驗證通過的情況下才能訪問該方法。
以下是一個簡單的實現示例:
public String generateToken(User user) {
String token = // 生成Token的邏輯
return token;
}
public boolean validateToken(String token) {
// 校驗Token的合法性,判斷Token是否過期、是否被篡改等
if (token合法) {
return true;
} else {
return false;
}
}
@Component
public class TokenFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String token = request.getHeader("token");
if (token != null && validateToken(token)) {
filterChain.doFilter(request, response);
} else {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
}
}
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TokenRequired {
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public String login(@RequestBody User user) {
// 用戶登錄邏輯
String token = userService.generateToken(user);
return token;
}
@GetMapping("/user")
@TokenRequired
public String getUser() {
// 獲取用戶信息的邏輯
return "User";
}
}
在上述示例中,TokenFilter
是一個過濾器,用于對請求頭中的Token進行驗證。TokenRequired
是一個注解,用于標注需要驗證Token的方法。在請求到達對應的Controller方法前,會先經過過濾器進行Token驗證,只有在驗證通過的情況下才能訪問該方法。