gpt4 book ai didi

Laravel 结合了 Passport 身份验证和普通身份验证

转载 作者:行者123 更新时间:2023-12-02 18:30:59 25 4
gpt4 key购买 nike

如何将 Passport 身份验证和普通 Laravel 身份验证结合起来?

我希望用户登录到 web-middleware 和 api-middleware 页面。登录路由在api-middleware中。目前我已经设置了 Passport 身份验证,它适用于所有 api 中间件路由。如何让用户也登录网络中间件?

编辑#1

我在做什么:

登录代码

$http = new \GuzzleHttp\Client();

try {
$response = $http->post(config('services.passport.login_endpoint'), [
'form_params' => [
'grant_type' => 'password',
'client_id' => config('services.passport.client_id'),
'client_secret' => config('services.passport.client_secret'),
'username' => $args['email'],
'password' => $args['password']
]
]);

$user = User::where('email', $args['email'])->first();

Auth::guard('web')->login($user);
return [
"token" => $response->getBody()->getContents(),
"user" => $user
];

} // ...

在某些网络中间件 route 的某个地方

return auth()->check() ? "logged in" : "not logged in";

返回“未登录”

最佳答案

理想情况下你不应该这样做,因为护照身份验证用于与 API 通信的单独应用程序,而 laravel 预装身份验证用于 MVC,它们是单独的用户 session 。

但假设您知道自己在做什么,请调用 Auth::login($user);在用户通过 API 登录时,或在用户通过 Web 中间件身份验证登录时生成护照 token ,以先登录者为准...

记住Auth::login($user);创建一个用户 session 并设置 cookie 来引用该 session ...因此,您为自己创建了一个新问题,即注销,有两个地方可以注销...因为从技术上讲,用户使用护照 token 登录两次,并且用一个 cookie 来引用他的 session ...

关于Laravel 结合了 Passport 身份验证和普通身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com