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:: 函数?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel where() 和 orderBy() 在外部服务器上的关系表上
使用 Xcode UI 测试,是不是可以在外部项目/存储库中测试应用程序?