使用 JWT 获取令牌而不尝试用户凭据 Laravel?

Posted

技术标签:

【中文标题】使用 JWT 获取令牌而不尝试用户凭据 Laravel?【英文标题】:Get token with JWT without attempting user credentials Laravel? 【发布时间】:2016-07-27 16:41:28 【问题描述】:

我目前正在开发一个 Angular(前端)- Laravel (API) 应用程序。我需要知道我是否可以进行混合登录。

目前我正在使用存储过程进行登录。但是如果登录成功,我想将 JWT 令牌发送到客户端。如果不调用 JWT 尝试方法,这可能吗? JWT 有类似 JWT::getToken($mail); 方法吗?如果我不能这样做,还有其他解决方法吗?

$mail = $request['email'];
$password = $request['password'];

$query = new Query("CALL SP_USER_LOG_IN(?,?, @outputMessage)");
$query->addParameter(1, $mail);
$query->addParameter(2, $password);

$outputMessage = DB::executeQuery($query);

if($outputMessage === null)

    //It means the login was successful
    $token = JWT::getToken($mail);

    return ["error" => NULL, "token" => $token];

else

    return ["error" => $outputMessage];

注意

我刚刚发现了 JWT,它看起来是一个非常好的解决方案,因为我正在前端使用一个轻量级的应用程序。但是由于我必须使用存储过程,所以我不知道如何进行。

【问题讨论】:

您是否使用包来生成 JWT? 是的,我是。目前在 Laravel 中使用 JWT 你能说得更具体一点吗?也许是包名或链接? 【参考方案1】:

验证用户后,从数据库中获取他们,然后创建令牌 fromUser($user)

if($outputMessage === null)

    //It means the login was successful
    $user = User::where('email', $mail)->first();
    $token = JWT::fromUser($user);

    return ["error" => NULL, "token" => $token];

【讨论】:

你救了我的命!谢谢!这就像一个魅力!

以上是关于使用 JWT 获取令牌而不尝试用户凭据 Laravel?的主要内容,如果未能解决你的问题,请参考以下文章

实现 JWT 身份验证 Azure Function 3.x - 使用 JWT 令牌获取当前用户的声明

如何在使用客户端凭据授予流程时在 JWT 令牌中附加或包含用户身份(用户名或电子邮件地址)

Spring Security JWT - 400 错误请求:“无效授权”“错误凭据”

使用 MongoDB 获取存储的用户凭据的 JAVA Spring 自定义身份验证

使用 ASP.NET 标识和 JWT 令牌的 Azure 函数身份验证

在 c# 中为使用 AzureAd 登录的当前用户获取 Jwt 令牌