Laravel Passport API:检索经过身份验证的令牌

Posted

技术标签:

【中文标题】Laravel Passport API:检索经过身份验证的令牌【英文标题】:Laravel Passport API: Retrieve Authenticated Token 【发布时间】:2018-03-22 06:28:30 【问题描述】:

情况

我正在使用 Laravel Passport API 通过个人访问令牌在 Laravel 和外部“代理”之间进行通信:https://laravel.com/docs/5.5/passport#personal-access-tokens

您可以为每个用户创建多个令牌。

身份验证有效,我可以通过Auth::User()检索用户

问题

如何查看使用了哪个令牌?

背景

我想为同一用户的不同“代理”使用不同的令牌,我需要知道使用哪个令牌来查看谁在连接。

【问题讨论】:

您应该能够在oauth_access_tokens 表中查找tokenuser_idclient_id。也看看这个讨论:laracasts.com/discuss/channels/laravel/passport-rest-makeauth 您可以使用 Auth::user()->token() 函数来获取令牌模型。这是“令牌扩展模型”类的对象,因此您应该能够像使用任何其他模型一样使用它。 @ElChupacabra 是的,行得通!谢谢!你能把这个作为问题的答案吗? 【参考方案1】:

你可以使用:

Auth::user()->token()

获取token模型的函数。这是“令牌扩展模型”类的对象,因此您应该能够像使用任何其他模型一样使用它。

另外在我的项目中我也有那个模型:

namespace App;

use Illuminate\Database\Eloquent\Model;

class OauthAccessToken extends Model

    //

和关系:

class User extends Authenticatable

    //...
    public function accessTokens()
    
        return $this->hasMany('App\OauthAccessToken');
    

所以我可以简单地访问所有令牌,例如删除它们:

Auth::user()->accessTokens()->delete();

【讨论】:

这个答案很好,但你能告诉我你是如何将 OauthAccessToken 模型链接到表的,还是你可以使用的特征?谢谢你! 如果类名与数据库表完全相同,则自动链接。唯一的区别是在 php 中你使用 CamelCase 而不是下划线。 您好,感谢您提出一个简短的问题,所以我如何获得实际令牌这是我的结果``` [ "id": 825786976, "user_id": 1, "client_id": 1、“名称”:“管理员”、“范围”:“[]”、“已撤销”:0、“created_at”:“2022-02-26T16:58:28.000000Z”、“updated_at”:“2022-02 -26T16:58:28.000000Z", "expires_at": "2023-02-26 16:58:28" ]

以上是关于Laravel Passport API:检索经过身份验证的令牌的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel Passport 获取经过身份验证的用户并授予密码

具有正常设计的 Passport Laravel Rest API Auth

使用 Laravel Lumen + Passport 获取经过身份验证的用户时出现问题

laravel Passport - 创建 REST API 用户认证以及Dingo/Api v2.0+Passport实现api认证

php 使用Passport进行Laravel REST API身份验证:https://www.cloudways.com/blog/rest-api-laravel-passport-authen

每天一点点之laravel框架 - Laravel5.6 + Passport实现Api接口认证