Laravel Passport的createToken方法没有给我哈希后的令牌。

4

laravel passport的createToken方法未给出哈希令牌。它从数据库表中返回此对象。

{
  "name": "Laravel Password Grant Client",
  "abilities": [
       "*"
  ],
  "tokenable_id": 10,
  "tokenable_type": "App\\Models\\User",
  "updated_at": "2021-09-02T15:58:03.000000Z",
  "created_at": "2021-09-02T15:58:03.000000Z",
  "id": 7
}.

我需要用于验证的令牌。 我运行了composer require laravel/passport

php artisan migrate
php artisan passport:install

使用HasApiTokens、HasFactory和Notifiable; 在AuthServiceProvider的boot方法中, 添加Passport::routes(); 在config/auth.php文件中进行配置

'api' => [
    'driver' => 'passport',
    'provider' => 'users',
],

我的注册控制器函数

$validator = Validator::make($request->all(), [
    'name' => 'required|string|max:255',
    'email' => 'required|string|email|max:255|unique:users',
    'password' => 'required|confirmed|string|min:6',
]);
if ($validator->fails()) {

    return response(['errors' => $validator->errors()->all()], 422);
}
$request['password'] = Hash::make($request['password']);
$request['remember_token'] = Str::random(10);
$user =  User::create($request->toArray());
$token = $user->createToken('Laravel Password Grant Client')->accessToken;

return response(["ok" => true, "message" => "You have successfully registered", "user" => $user, "token" => $token], 200);
3个回答

12
请确保您使用了正确的特征。
use Laravel\Passport\HasApiTokens;

不是

use Laravel\Sanctum\HasApiTokens;

4

刚才是laravel默认给了我sanctum。用户模型中的HasApiToken默认来自sanctum而不是passport。


2
如果您使用护照作为身份验证,请确保在用户模型中使用Laravel \ Passport \ HasApiTokens而不是Laravel \ Sanctum \ HasApiTokens。请注意,保留HTML标记。

请避免在此问题上给出与其他人相同的答案。如需更多信息,请阅读SO的文章:stackoverflow.com/help/how-to-answer - Farzin Farzanehnia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接