如何在新的微服务中验证现有用户
Posted
技术标签:
【中文标题】如何在新的微服务中验证现有用户【英文标题】:How to authenticate existing users in new microservices 【发布时间】:2021-12-14 12:40:55 【问题描述】:我们有带有用户身份验证系统的 laravel 5.2。
我们将 Angular.js 用于 UI 应用程序,它通过用户会话调用 laravel API。
用户使用邮箱和密码登录,然后使用项目。
但现在我们正在推出一款新产品,并尝试遵循微服务架构,让不同团队的应用程序解耦、可扩展和可维护。
使用 React 应用创建 UI,React 应用将调用新的微服务来完成这项工作。
新的 react 应用的入口点将是仍然是旧的应用。
用户在旧应用中登录,然后切换到新的 React 应用,然后在新 API 中使用新产品。
用户数据库相同,用户可以同时使用两种产品。
这里的问题是,我们如何在新服务中对用户进行身份验证/授权?
【问题讨论】:
我看到这个问题的票数接近,但我不认为关闭是合理的。这些是我希望在 Stack Overflow 上看到的更多问题:“如何”问题。我们已经有很多“解决我损坏的代码”的问题。请注意,好的问题不一定需要代码或“努力证明”。 【参考方案1】:解决方案 1:使用 SSO(单点登录)系统,例如:https://github.com/aacotroneo/laravel-saml2
解决方案2:用户登录后,从旧项目向新项目发出Http请求(GuzzleHttp):
Http::post('http://my-new-project.com/auth', [
'email' => 'user@example.com',
]);
可选择创建队列/作业, 然后在您的新项目中手动验证用户,例如:
$user = User::where('email', $request->input('email'))->first();
Auth::login($user);
【讨论】:
在解决方案2中,密钥email
是错误的以上是关于如何在新的微服务中验证现有用户的主要内容,如果未能解决你的问题,请参考以下文章