程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Laravel Passport 签发后获取用户访问令牌大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Laravel Passport 签发后获取用户访问令牌?

开发过程中遇到Laravel Passport 签发后获取用户访问令牌的问题如何解决?下面主要结合日常开发的经验,给出你关于Laravel Passport 签发后获取用户访问令牌的解决方法建议,希望对你解决Laravel Passport 签发后获取用户访问令牌有所启发或帮助;

我正在使用 Laravel Passport 在用户登录后向其颁发 Bearers,然后能够连接到 API(是的,我知道 Sanctum 可能更适合我的需求,但我正在使用 Passport,所以甚至不要提及切换到 Sanctum),然后在前端,我将用户电子邮件和 Bearer 存储在 cookie 中,以便稍后将它们用于其他查询,并将不记名添加到 Axios Auth 标头,尽管现在我的逻辑有问题,可能与我不知道如何在 Nuxt 中正确使用 Passport 的事实有关。

我对在帖子请求中向用户发送电子邮件的每个页面进行查询,他们返回全局信息和用户信息的混合。

是的,我的端点已经在身份验证中间件后面,但我只是发送一个承载令牌以允许使用任何数据查询端点,无法阻止从用户 A 请求用户 B 信息。

如何使用阻止用户发送不同的电子邮件并获取其他用户的信息?

这是我发布访问令牌的方式:

$token    = $user->createtoken('Laravel password Grant ClIEnt')->accesstoken;

有没有办法做这样的事情?

$user = User::where('email',$request->email)->first();
// E.g. user@mail.com  ...

// Get the user Access Token
$userToken    = $user->getAccesstoken;
// E.g. someBerareText

// check if the User Access Token match with the one send in the request
// if they don't match throw a 401
if ($userToken !== $request->header('Authorization')) {
   return response()->Json([ "error" => "Not Authorized" ],401);
...

// E.g. $request->header('Authorization') it's SomeOtherBearer because he
// requested info for user@mail.com but the $request->header('Authorization')
// belong to otheruser@othermail.com

用户仍然可以发送相同的请求,但使用用户 B 的电子邮件并查看不属于他的其他信息,那么我如何检查 $request 中的电子邮件是否属于实际登录的用户在?

某种方法来解码访问令牌并检查它是否真的属于用户?

解决方法

如果设置了Laravel Passport作为守卫,它将从承载令牌中获取用户,其逻辑可以在Passport中的TokenGuard.php类中看到。它实际上与您想要实现的功能相同。

因此,与使用的守卫相比,身份验证的工作方式不同。因此护照要求您更换警卫。这是 Laravel 如何区分身份验证以及 Auth::user() 如何加载的决定性因素。

'guards' => [
    ...

    'api' => [
        'driver' => 'passport','provider' => 'users',],

这意味着您可以检查用户是否通过模型函数 is() 进行了正确的身份验证,以比较模型是否相同。

User::where('email',$request->email)->first()->is(Auth::user())

大佬总结

以上是大佬教程为你收集整理的Laravel Passport 签发后获取用户访问令牌全部内容,希望文章能够帮你解决Laravel Passport 签发后获取用户访问令牌所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: