From f213549af3794e6d81019231b163a4cc60daf501 Mon Sep 17 00:00:00 2001 From: ak Date: Tue, 11 Aug 2026 21:02:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=99=BB=E5=BD=95/=E6=B3=A8=E5=86=8C/?= =?UTF-8?q?=E7=99=BB=E5=87=BA=20POST=20=E8=B7=AF=E7=94=B1=E8=A1=A5=20.shtm?= =?UTF-8?q?l=20=E5=8F=98=E4=BD=93=EF=BC=88=E8=A1=A8=E5=8D=95=20route()=20?= =?UTF-8?q?=E7=94=9F=E6=88=90=20.shtml=20=E5=90=8E=E7=BC=80=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=20405=EF=BC=9B=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?AuthFlow=20=E5=9B=9E=E5=BD=92=E6=B5=8B=E8=AF=95=EF=BC=9B?= =?UTF-8?q?=E5=85=A8=E9=9D=A2=E7=A1=AE=E8=AE=A4=E5=89=8D=E5=8F=B0=20URL=20?= =?UTF-8?q?=E5=85=A8=E9=83=A8=20route()=20=E7=94=9F=E6=88=90=E6=97=A0?= =?UTF-8?q?=E7=A1=AC=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/web.php | 5 +- .../Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg | 1 + .../RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg | 1 + .../EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg | 1 + .../kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg | 1 + .../4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg | 1 + .../cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg | 1 + .../5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg | 1 + .../db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg | 1 + .../IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg | 1 + .../UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg | 1 + tests/Feature/AuthFlowTest.php | 72 +++++++++++++++++++ 12 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg create mode 100644 storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg create mode 100644 storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg create mode 100644 storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg create mode 100644 storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg create mode 100644 storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg create mode 100644 storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg create mode 100644 storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg create mode 100644 storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg create mode 100644 storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg create mode 100644 tests/Feature/AuthFlowTest.php diff --git a/routes/web.php b/routes/web.php index 36ebfe7..cce6cff 100644 --- a/routes/web.php +++ b/routes/web.php @@ -62,11 +62,14 @@ Route::get('/comments', fn () => redirect()->route('comments', [], 301)); Route::get('/login.shtml', [AuthController::class, 'showLogin'])->name('login'); Route::get('/login', fn () => redirect()->route('login', [], 301)); +Route::post('/login.shtml', [AuthController::class, 'login']); Route::post('/login', [AuthController::class, 'login']); -Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); +Route::post('/logout.shtml', [AuthController::class, 'logout'])->name('logout'); +Route::post('/logout', [AuthController::class, 'logout']); Route::get('/register.shtml', [AuthController::class, 'showRegister'])->name('register'); Route::get('/register', fn () => redirect()->route('register', [], 301)); +Route::post('/register.shtml', [AuthController::class, 'register']); Route::post('/register', [AuthController::class, 'register']); Route::get('/profile.shtml', [AuthController::class, 'profile'])->middleware('auth')->name('profile'); diff --git a/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/Fiu6NSdVADQ9oDKXbJE65jm9aDviZ0r2.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/8coBThtf4WJ0ffbwIAqkv2QrMZN15gFX/RpDtcdyiATFxTkvLRKMCBIrnWkztCygCthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/EMueufkOUXBhnIqQo4nvtCmGECl844vm.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/9ldvdXYPdeQx2fISUeFvnGQ1nY67glDG/kZmZZZbYcAwRfUjmTgsXoYqLg0azu9zZthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/4NY67HytEGzdvdprotBZIMK0v30i96tf.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/JW6LZAu63VEWMcsynT7soFxA1NSffMra/cViWvK8Vtg0OqDKtbx8fe6q2b8Sl1a0vthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/5UprL9uJd1hb1G23T2ydz0tDikUg49aD.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/K2yY0dl0ZNNJ8GpyWuN5Xzvg81zylWCQ/db8FN6bCHXpIYSHY3yxpQuLbgc4ikGoUthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/IPGaRZud4xYCcLOgRkfjFF7gcO48ovOHthumb.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg new file mode 100644 index 0000000..7e754f4 --- /dev/null +++ b/storage/media-library/temp/tfjrgdueXasxiqnS97Z2XrpFEcURNh9W/UDUyVVtSnvuYSjqOIOGn1XAD2ZObdZ1N.jpg @@ -0,0 +1 @@ +fake-jpg \ No newline at end of file diff --git a/tests/Feature/AuthFlowTest.php b/tests/Feature/AuthFlowTest.php new file mode 100644 index 0000000..39d493f --- /dev/null +++ b/tests/Feature/AuthFlowTest.php @@ -0,0 +1,72 @@ +seed(); + } + + public function test_login_form_posts_to_shtml(): void + { + $this->post('/login.shtml', [ + 'email' => 'admin@laralog.test', + 'password' => 'password', + ])->assertRedirect('/'); + + $this->assertAuthenticated(); + } + + public function test_register_form_posts_to_shtml(): void + { + $this->post('/register.shtml', [ + 'name' => '新用户', + 'email' => 'new@test.com', + 'password' => 'password123', + 'password_confirmation' => 'password123', + ])->assertRedirect('/profile.shtml'); + + $this->assertAuthenticated(); + $this->assertDatabaseHas('users', ['email' => 'new@test.com']); + } + + public function test_logout_form_posts_to_shtml(): void + { + $user = User::where('email', 'admin@laralog.test')->first(); + $this->actingAs($user)->post('/logout.shtml')->assertRedirect('/'); + + $this->assertGuest(); + } + + public function test_front_pages_use_shtml_links(): void + { + $user = User::create(['name' => '作者', 'email' => 'w@t.com', 'password' => bcrypt('x')]); + \App\Models\Post::create([ + 'user_id' => $user->id, + 'title' => '链接测试', + 'slug' => 'link-test', + 'content' => '内容', + 'content_format' => 'markdown', + 'status' => 'published', + 'published_at' => now(), + ]); + + $html = $this->get('/')->getContent(); + + // 前台链接应生成 .shtml(不含硬编码无后缀路径) + $this->assertStringContainsString('/posts/link-test.shtml', $html); + $this->assertStringNotContainsString('href="/posts/link-test"', $html); + $this->assertStringNotContainsString('href="/archives"', $html); + $this->assertStringContainsString('href="http://laralog.test/archives.shtml"', $html); + } +}