繁体   English   中英

Laravel sanctum 检查用户是否通过身份验证

[英]Laravel sanctum check if user is authenticated

使用 Laravel 密室时如何检查用户是否通过身份验证?

例子:

Controller:

public function testAuth(Request $request)
{ 
     if ($request->user()) {
            return "auth";
      } else {
            return "guest";
      }
}

api.php

Route::get('testauth', [MyTestController::class, 'testAuth']);

即使我在标头中传递令牌,这条路线也总是返回客人

当我添加 sanctum 中间件时,路由返回auth

api.php

Route::get('testauth', [MyTestController::class, 'testAuth'])->middleware('auth:sanctum');

但我不想那样,我想在不使用中间件的情况下检查用户是否在 controller 中经过身份验证

试试下面的代码会帮助你.....你可以使用 user('sanctum') 而不是 user()

public function testAuth(Request $request)
{ 
     if ($request->user('sanctum')) {
            return "auth";
      } else {
            return "guest";
      }
}

首先像这样将auth中间件与sanctum guard 连接到路由

Route::get('/somepage', 'SomeController@MyMethod')->middleware('auth:sanctum');

然后在路由闭包/控制器操作中访问它

auth()->user()

照常

授权 http header 必须持有您的不记名令牌

return auth('sanctum')->check() ? "Auth" : "Guest";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM