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

根据客户Laravel护照不同的令牌过期

黄宏毅
2023-03-14

我有一个使用Passport身份验证的Laravel应用程序。

登录

public function authenticate(Request $request)
{
    $params = [
        'grant_type' => 'password',
        'client_id' => 1,
        'client_secret' => "secret",
        'username' => request('username'),
        'password' => request('password'),
        'active' => 1,
        'scope' => '*'
    ];

    $request->request->add($params);

    // verify the credentials and create a token for the user
    $proxy = Request::create('oauth/token', 'POST');

    return Route::dispatch($proxy);
}

我已解决AuthServiceProvider的到期问题:

Passport::routes(function ($router) {
   $router->forAccessTokens();
});
Passport::tokensExpireIn(now()->addMinute(1));
Passport::refreshTokensExpireIn(now()->addDays(30));

它的工作原理,但1分钟后令牌过期。我想要一个不同的令牌到期日,这取决于我试图登录的地方,因为我有一个网站,桌面应用程序和一个Android应用程序。

例如:

  • 网络应用程序:8小时

我想从我尝试登录的地方发送给我,但这是一个好方法吗?还有其他可能的方法吗?

现在我已经尝试过了:

-)已从AuthServiceProvider中删除:

Passport::tokensExpireIn(now()->addMinute(1));

并在登录功能中添加

if (request('from') == 'something') {
    Passport::tokensExpireIn(now()->addYears(1));
} else {
    Passport::tokensExpireIn(now()->addHours(8));
}

$proxy = Request::create('oauth/token', 'POST');

共有1个答案

田博易
2023-03-14

您可以从下面的链接获得帮助,请查找

用于获取用户代理详细信息并基于代理应用条件

例如,您可以使用如下代码

if ( Agent::isDesktop() ) {
    Passport::tokensExpireIn(now()->addYears(1));
} else if(Agent::isMobile()){
    Passport::tokensExpireIn(now()->addMonth(5));
}else{
    Passport::tokensExpireIn(now()->addHours(8));
}
 类似资料:
  • 我正在开发标准的LaravelRESTAPI。我正在关注Laravel5.4API认证(Passport)文档。 我需要的是,用户应该通过API登录并获得不会过期的访问令牌。 表具有列。默认值为一年。我把expires_at日期改成了昨天。但它仍然有效。我搜索关于Laravel Passport令牌寿命。有人说过期日期没有根据任何要求进行检查。 是真的吗?如果是真的,那么列的目的是什么?有人能解释

  • 我正在尝试使用Laravel护照,我不知道我是否发现了一个bug或者我遗漏了什么。 登录控制器: 因此,我在用户登录时创建令牌。在数据库中,我看到生成的令牌在字段处过期:一周后,所以它是正确的。但如果我更改了旧日期的值,我仍然可以使用此令牌。。。 拉威尔只是忽略了这个领域?为什么? 我做了研究,但我有点困惑。。。很多人说代币不会过期或在一年内过期。但后来我发现了一些关于这个片段的帖子: 我明白To

  • 我正在使用 spring-security-oauth2 来实现我的 OAuth2 授权服务器。spring-security-oauth2 即将消失,我知道我需要用 spring-authorization-server 替换它 问:是否可以为不同的客户端设置不同的令牌到期时间(此处客户端表示客户端 ID/客户端密钥对)? 如果是,您能否分享有关 的文档/示例代码? 如果不是,它是Spring-

  • 问题内容: 我正在编写一个想同时用作Web应用程序和API提供程序的nodejs应用程序。验证用户身份后,我想为该用户分配一个令牌,以用于后续请求。这对于Web应用程序的通行证非常有用,因为我只是在会话中使用令牌对用户进行序列化和反序列化。但是,在响应API请求时,没有用于设置存储会话信息的cookie。理想情况下,护照将在会话和请求正文中都寻找令牌。有什么方法可以配置通行证来完成此任务吗? 问题

  • 我试图做api-auth通过检查生成令牌从登录用户的用户名与md5加密方法在laravel 5.5飞,不想保存令牌到用户的表。当用户注销时,令牌将无效。URL将是这样的: http://myserver.com/products?token=...... 我该怎么做? 新增-这是第44届世界技能大赛的测试项目,以下为测试项目文件: 认证 A.登录(v1/auth/登录) 描述:供客户端通过用户名和

  • 使用Laravel Passport,如何检查刷新令牌是否仍然有效? 我问的不是访问令牌:我可以通过请求任何实现< code > Route::middleware(auth:API)的路由器来验证它 我知道如何使用它来请求新的访问和刷新令牌(查询),但它会撤销当前的访问和更新令牌。 用例:我有一个刷新令牌存储为<code>HttpOnly✓ cookie</code>,我想使用它来验证对静态资源