Laravel/Lumen Tymon/JWT 通过电话号码和密码

Posted

技术标签:

【中文标题】Laravel/Lumen Tymon/JWT 通过电话号码和密码【英文标题】:Laravel/Lumen Tymon/JWT by Phone Number and Password 【发布时间】:2021-01-01 18:08:11 【问题描述】:

我正在使用 JWT 为我的 API 应用程序创建一个 API 登录。在默认代码中,JWT 使用电子邮件和密码进行身份验证。

public function login(Request $request)
    $credentials = $request->only(['email', 'password']);

    if (!$token = JWTAuth::attempt($credentials)) 
      return 'Invalid login details';
    
    return $token;

但是现在,我想通过电话/电子邮件密码更改登录,这意味着,当请求到来时,我会使用 正则表达式 来识别电子邮件或电话。然后,使用 attempt() 函数的凭据。

有什么解决办法吗?提前致谢。

【问题讨论】:

【参考方案1】:

您应该可以通过发送电话或电子邮件作为凭据轻松地做到这一点。

if($regexShowsItsAnEmail) 
    $credentials = $request->only(['email', 'password']); // or simply $credentials = ['email' => $email, 'password' => $password]
 elseif($regexShowsItsAPhoneNumber) 
    $credentials = $request->only(['phone', 'password']); // or simply $credentials = ['phone' => $phone, 'password' => $password]
 else 
    return response()->json(['message' => 'Unauthorized'], 401);

【讨论】:

【参考方案2】:

我发现 Request 是 Illuminate\Http\Request; Request->only() 返回数组。

您可以使用获取或设置值 $credentials["email"]$credentials["password"]

【讨论】:

以上是关于Laravel/Lumen Tymon/JWT 通过电话号码和密码的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 7.0 - tymon/jwt-auth - 检查令牌是不是有效

PHP Laravel 5.7 Tymon/jwt-auth 未安装

tymon/jwt-auth Laravel:无法验证令牌签名

Laravel 8 tymon/jwt-auth 使另一个用户的令牌无效

php Laravel Tymon JWT从凭证生成令牌

无法在 Tymon JWT 中添加自定义声明