AuthController.java
Java/Baasid/src/main/java/com/baasid/controller/AuthController.java
package com.baasid.controller;
import com.baasid.dto.LoginRequest;
import com.baasid.dto.LoginResponse;
import com.baasid.service.AuthService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.headers.Header;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 認證相關 REST API,基底路徑 {@code /auth}。
*/
@RestController
@RequestMapping("/auth")
@Tag(name = "Auth", description = "用戶認證")
public class AuthController {
private final AuthService authService;
public AuthController(AuthService authService) {
this.authService = authService;
}
/**
* 帳密登入:成功時回應 body 為基本使用者資訊,並於 Response Header {@code Authorization}
* 回傳 {@code Bearer <JWT>} 供後續受保護端點使用。
*/
@PostMapping("/login")
@Operation(
summary = "用戶登入",
description = "登入系統並在 Response Header Authorization 取得 JWT token",
responses = {
@ApiResponse(responseCode = "200", description = "成功",
headers = @Header(name = "Authorization", description = "JWT token",
schema = @Schema(type = "string")),
content = @Content(schema = @Schema(implementation = LoginResponse.class))),
@ApiResponse(responseCode = "401", description = "帳號密碼錯誤",
content = @Content),
@ApiResponse(responseCode = "500", description = "系統錯誤",
content = @Content)
}
)
public ResponseEntity<LoginResponse> login(@Valid @RequestBody LoginRequest request) {
AuthService.LoginResult result = authService.login(request);
return ResponseEntity.ok()
.header("Authorization", "Bearer " + result.token())
.body(result.body());
}
}
Bài viết liên quan
init.sql
init.sql — sql source code from the Java learning materials (Java/Baasid/sql/init.sql).
Đọc bài viết →BaasidApplication.java
BaasidApplication.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/BaasidApplication.java).
Đọc bài viết →DataInitializer.java
DataInitializer.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/config/DataInitializer.java).
Đọc bài viết →OpenApiConfig.java
OpenApiConfig.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/config/OpenApiConfig.java).
Đọc bài viết →SecurityConfig.java
SecurityConfig.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/config/SecurityConfig.java).
Đọc bài viết →GoodsController.java
GoodsController.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/controller/GoodsController.java).
Đọc bài viết →