Sanctum でオプションのログインを使用してユーザーのルーティングを設定する
P粉741678385
2023-08-06 12:46:33
<p>Sanctum はミドルウェア Auth:sanctum を共有しており、機能します。このコードを見てください: </p>
<pre class="brush:php;toolbar:false;">Route::middleware('auth:sanctum')->group(function () {
Route::post('/profile', [TestController::class, 'test']);
});</pre>
<p>そしてコントローラーメソッド: </p>
<pre class="brush:php;toolbar:false;">パブリック関数 test()
{
if (Auth::check()) {
「ユーザー」を返します。
} それ以外 {
「ゲスト」を返します。
}
}</pre>
<p>問題は、ルートで「auth:sanctum」ミドルウェアを使用している場合、ログインしているユーザーに対してはすべて正常に動作しますが、ゲストに対しては「Unauthorized」エラーが発生することです。このミドルウェアを使用しないと、認証が正しく機能せず、ログインしているかどうかが認識されません (常に「Guest」が返されます)。この問題はどうすれば解決できますか?ログイン時にユーザーを表示したいのですが、それ以外の場合は「ゲスト」を表示する必要があります。 </p>
ユーザーが認証に Sanctum を使用している場合は、auth('sanctum')->check() を使用してみてください。