当前位置: 首页 > 知识库问答 >
问题:

如何更改访问令牌Laravel Passport的到期日期

许寒
2023-03-14

我正在尝试更改访问令牌Laravel Passport的过期日期。

以下是我尝试过的:

AuthServiceProvider

public function boot(){
    $this->registerPolicies();

    Passport::routes();

    Passport::tokensExpireIn(Carbon::now()->addDays(1));
    Passport::refreshTokensExpireIn(Carbon::now()->addDays(2));
    Passport::personalAccessTokensExpireIn(Carbon::now()->addMonths(1));
}

用户控制器

public function login() {
    $credentials = [
        'email' => request('email'),
        'password' => request('password')
    ];
    if (Auth::attempt($credentials)) {
        $success['token'] = Auth::user()->createToken('MyApp')->accessToken;
        $success['name'] = Auth::user()->name;

        return response()->json(['success' => $success]);
    }
    return response()->json(['error' => 'Unauthorized'], 401);
}

但是没有成功。在字段expires_at的数据库中,过期日期没有更改,默认情况下仍然是一年。

我正在尝试这样做,因为我想在访问令牌过期时重定向到登录表单。我怎么能做到呢?

我也不确定刷新令牌会发生什么,它是否会返回另一个访问令牌,并且用户不需要授权?

共有1个答案

慕容昊焜
2023-03-14

您正在创建属于用户的个人访问令牌。

个人访问令牌的默认到期日为1年。

查看您的代码,我非常确定此命令应该可以完成以下工作:

Passport::personalAccessTokensExpireIn(Carbon::now()->addMonths(1));

在获取令牌时,请仔细检查数据库中的expire\u列和响应中的expires\u值。它显示令牌生存的秒数。

 类似资料:
  • 当我从Google API获得一个< code>access_token时,它带有一个< code>expires_in值。根据文档,该值表示“访问令牌的剩余寿命”。 这个值的单位是多少?

  • 我的目标是获得两个资源服务器特定的访问令牌,其中只包含各自资源服务器特定的数据。 我有以下设置:一个公共客户端使用2个资源服务器。 在配置客户机、用户、领域角色、客户机作用域并使用scope参数之后,我能够创建2个不同的资源服务器特定的访问令牌: 我的问题是,如何将Keycloak配置为第二个访问令牌不包含角色“offline_access”和“uma_authorization”以及AUD:“o

  • 我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令

  • 假设我们使用OAuth承载令牌来保护API。有一个带有OWIN中间件的NuGet包可以为我们做到这一点:https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth. Everethig看起来很棒,直到提出访问令牌过期的问题——我们不想强迫用户一次又一次地重新登录。据我所知,有三种基本方法: 使访问令牌到期时间非常长(例如1个月) 使用O

  • 我找不到任何留档来解释是否以及如何修改AWS认知用户池的访问和身份令牌的到期时间。 文件规定,默认情况下,排放后1小时到期。 有没有办法修改有效期?

  • 当我试图在访问令牌过期之前使用刷新令牌生成访问令牌时,系统会生成一个新令牌,并且一切正常。但是如果访问令牌过期,则请求返回。 中的方法不是使用我从以前的访问令牌中存储在字典中的标识生成访问令牌吗? 如果上一个更新令牌尚未过期,如何阻止客户端使用相同的刷新令牌请求新的访问令牌? oauthProvider.cs: RefreshTokenProvider.cs: 对不起,英语不好,希望你能理解!