she*_* me 4 php laravel laravel-passport laravel-sanctum
我之前使用过 Laravel 的内置 api 令牌身份验证,但我想为不同的客户端提供多个 api 令牌,并且在 Laravel 7.x 中,我正在尝试迁移到 Laravel Sanctum。
API 似乎可以毫无问题地对用户进行身份验证,但是当我尝试使用 获取用户数据时Auth::user();,它返回空值。也 Auth::guard('api')->user();返回null。
我应该使用什么作为 Auth 守卫?还是根据提供的令牌获取用户数据的正确方法?
非常感谢....
Gav*_*vin 14
首先,通过 sanctum auth 中间件路由。
Route::get('/somepage', 'SomeController@MyMethod')->middleware('auth:sanctum');
Run Code Online (Sandbox Code Playgroud)
然后,获取用户。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function MyMethod(Request $request) {
return $request->user();
}
}
Run Code Online (Sandbox Code Playgroud)
auth()->user()是一个全局助手,Auth::user()是一个支持门面,并$request->user()使用 http。您可以使用其中任何一个。为了快速测试,请尝试
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function MyMethod(Request $request) {
return $request->user();
}
}
Run Code Online (Sandbox Code Playgroud)
请务必在标题中发送您的令牌,如下所示:
Authorization: Bearer UserTokenHere
Run Code Online (Sandbox Code Playgroud)