Laravel 中是不是有任何方法可以在外部 API 中验证用户并将其保存到本地会话,以便我可以使用所有 User:: 和 Auth:: 函数?

Posted

技术标签:

【中文标题】Laravel 中是不是有任何方法可以在外部 API 中验证用户并将其保存到本地会话,以便我可以使用所有 User:: 和 Auth:: 函数?【英文标题】:Is there any way in Laravel to authenticate user in external API and save it to local session so that, I can use all User:: and Auth:: functions?Laravel 中是否有任何方法可以在外部 API 中验证用户并将其保存到本地会话,以便我可以使用所有 User:: 和 Auth:: 函数? 【发布时间】:2020-01-12 03:21:36 【问题描述】:

我有一个要求,我应该通过外部 API(没有本地数据库)登录和注册用户。如何使用外部 API 登录用户,以便可以使用所有 Laravel User:: 和 Auth:: 功能?

【问题讨论】:

您是否有一个 API 端点,您可以在其中对来自外部 API 的用户进行身份验证? 你可以使用 Auth::login($user, true) 或 Auth::loginUsingId($userId, true); @rkg 是的,我有。作为回应,我得到了用户凭据。我想像 Laravel 一样将它存储在会话中并具有相同的功能 【参考方案1】:

您可以使用Auth::login()。下面是一些示例代码,您可以修改为您的特定 API 调用。

$response = $api->login($credentials);

$user = User::findByApiId($response->id);

Auth::login($user);

【讨论】:

守卫呢? 在运行守卫之前在中间件中执行此操作。为了防止每个请求调用 auth API,将 API 响应存储在会话变量中并在后续请求中使用:session(['api_id' => $apiUserId])

以上是关于Laravel 中是不是有任何方法可以在外部 API 中验证用户并将其保存到本地会话,以便我可以使用所有 User:: 和 Auth:: 函数?的主要内容,如果未能解决你的问题,请参考以下文章

在外部 php 网站上获取 laravel 当前用户

Laravel where() 和 orderBy() 在外部服务器上的关系表上

使用 Xcode UI 测试,是不是可以在外部项目/存储库中测试应用程序?

Oracle 中的非相关子选择是不是在外部语句之前计算?

Redshift Spectrum 是不是允许您在外部表上添加列

如何在外部点击时关闭下拉菜单?