security(auth): P0 認證安全強化
- Token 過期時間設為 7 天(sanctum.php expiration) - prune-expired 每日排程清除過期 token 記錄 - Google OAuth redirect 改用 URL fragment(#token=)避免 token 出現在 server log - SocialAuthController env() 改 config() 修正 config:cache 下 redirect 失效問題 - 登入端點加 rate limiting:member/provider throttle:5,1,admin throttle:3,1 - axios/coachAxios 加 401 response interceptor,token 過期自動登出 - 修正 migration SQLite 相容性(MODIFY COLUMN),Feature tests 從 7 通過恢復至 41 - 新增 AuthRateLimitTest(5 tests)驗證各角色頻率限制行為 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -28,7 +28,7 @@ Route::get('/diving-offers/{id}/reviews', [ReviewController::class, 'publicList
|
||||
|
||||
// 會員註冊/登入
|
||||
Route::post('/member/register', [AuthController::class, 'registerMember']);
|
||||
Route::post('/member/login', [AuthController::class, 'loginMember']);
|
||||
Route::middleware('throttle:5,1')->post('/member/login', [AuthController::class, 'loginMember']);
|
||||
|
||||
// Google 第三方登入(僅會員)
|
||||
Route::get('/auth/google/redirect', [\App\Http\Controllers\API\SocialAuthController::class, 'redirectToGoogle']);
|
||||
@@ -60,7 +60,7 @@ Route::middleware('auth:sanctum')->post('/reviews/{id}/helpful', [ReviewControll
|
||||
|
||||
// 服務提供者註冊/登入
|
||||
Route::post('/provider/register', [AuthController::class, 'registerProvider']);
|
||||
Route::post('/provider/login', [AuthController::class, 'loginProvider']);
|
||||
Route::middleware('throttle:5,1')->post('/provider/login', [AuthController::class, 'loginProvider']);
|
||||
|
||||
// 服務提供者專屬 API(需登入)
|
||||
Route::middleware(['auth:sanctum'])->prefix('provider')->group(function () {
|
||||
@@ -98,7 +98,7 @@ Route::middleware(['auth:sanctum'])->prefix('provider')->group(function () {
|
||||
|
||||
// 管理員註冊/登入
|
||||
Route::post('/admin/register', [AuthController::class, 'registerAdmin']);
|
||||
Route::post('/admin/login', [AuthController::class, 'loginAdmin']);
|
||||
Route::middleware('throttle:3,1')->post('/admin/login', [AuthController::class, 'loginAdmin']);
|
||||
|
||||
// 管理員專屬 API(需登入)
|
||||
Route::middleware(['auth:sanctum', 'admin'])->prefix('admin')->group(function () {
|
||||
|
||||
@@ -10,3 +10,4 @@ Artisan::command('inspire', function () {
|
||||
|
||||
Schedule::command('app:expire-pending-bookings')->hourly();
|
||||
Schedule::command('app:complete-finished-bookings')->dailyAt('00:05');
|
||||
Schedule::command('sanctum:prune-expired --hours=168')->daily();
|
||||
|
||||
Reference in New Issue
Block a user