【问题标题】:Laravel Passport Not Returning TokenLaravel Passport 不返回令牌
【发布时间】:2021-11-15 17:52:48
【问题描述】:

我使用 laravel 护照创建了一个身份验证控制器,但结果与通常不同。变量$token = $user->createToken('TestApp')->accessToken; 不会在oauth_access_tokens 表中生成令牌,而是在personal_access_token 表中创建令牌

我的注册控制器是

public function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'username' => 'required|unique:users,username',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|confirmed',
            'phone' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json(['error'=>$validator->errors()], 401);            
        }

        $input = $request->all();

        $input['password'] = bcrypt($input['password']);

        $user = User::create($input);
        
        $verifyUser = UserVerfication::create([
            'user_id' => $user->id,
            'token' => sha1(time())
        ]);
        \Mail::to($user->email)->send(new VerifyMail($user));
        
        $token =  $user->createToken('TestApp')->accessToken;

        return response()->json([
            'success' => true,
            'message' => 'Registration Success',
            'data' => array('APItoken' => $token, 'user' => $user)
        ], 200);
    }

结果:

"APItoken": {
      "name": "LinwokApp",
      "abilities": [
         "*"
      ],
      "tokenable_id": 13,
      "tokenable_type": "App\\Models\\User",
      "updated_at": "2021-09-22T08:55:12.000000Z",
      "created_at": "2021-09-22T08:55:12.000000Z",
      "id": 11},

【问题讨论】:

  • 您是否将这个'Laravel\Passport\PassportServiceProvider::class,' 添加到app.php providers 数组中?你有没有把 api->driver 改成 'passport'in auth.phpin 守卫数组?
  • @JEJ 是的,我什么都做了
  • @JEJ 'api' => ['driver' => 'passport', 'provider' => 'users', 'hash' => false,],

标签: laravel laravel-8 laravel-passport


【解决方案1】:

一切都正确。在您的用户模型中,您应该调用“使用 Laravel\Passport\HasApiTokens”而不是“使用 Laravel\Sanctum\HasApiTokens”。默认情况下,Laravel 使用 Sanctum 进行配置。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

我不知道这个问题是否仍然有效,但我遇到了同样的问题并找到了解决方案。

查看您拥有 HasApiTokens 的命名空间。

我用过:

使用 Laravel\Sanctum\HasApiTokens;

而不是

使用 Laravel\Passport\HasApiTokens;

这是导致问题的原因

【讨论】:

  • 谢谢,您的回答应该被接受。
猜你喜欢
  • 2020-11-22
  • 2014-03-23
  • 2019-03-24
  • 2019-08-30
  • 2017-09-24
  • 2020-05-02
  • 2020-09-14
  • 2017-07-25
  • 2017-10-15
相关资源
最近更新 更多