Laravel 不同 back-end 项目之间的身份验证
Laravel authentication between different back-end project
我有两个或更多 back-end API(Laravel) 项目和一个 front-end React JS 项目。在 front-end 应用程序中,我将调用所有 back-end API 项目。
当用户登录时,身份验证将签入App 1
(使用Laravel passport)和return access_token
.
我想在从 App 1
和 App 2
调用 API 时使用这些 access_token
。但是,主要问题是如何检查从 App 2
到 App 1
服务器的 access_token
验证。
为了解决这个问题,我认为但不确定它是否正确,我可以在 App 2
服务器中创建中间件并获取每个传入的 access_token
并将其发送以检查验证至 App 1
。如果return true,用户可以访问,否则不能访问。
但是,我认为这种方式是不合适的,因为从App 2
到App 1
,每个传入的请求都需要检查access_token
验证,这会减慢服务器和瓶颈问题。
我已经在 google 上搜索了很多帖子,但还没有找到最适合我的方法。我找到了一种 OAuth 服务器实现方式 https://www.youtube.com/watch?v=K7RfBgoeg48 但是,我认为这种方式在我的项目结构中效果不佳,因为我有很多自定义项。
我也看了reddit上的讨论(https://www.reddit.com/r/laravel/comments/dqve4z/same_login_across_multiple_laravel_instances/),但是还是没看懂。
这里有几个选项:
我希望您有一个数据库,其中包含您的用户的所有访问和刷新令牌 - 因此只需创建一个从 App2 后端服务器到包含您的访问和刷新令牌的数据库的数据库访问,然后检查他们通过新的数据库连接直接在 App2 中。
创建将检查从 App2 到 App1 的用户身份验证的中间件,但正如您正确指出的那样,这会导致额外的加载时间。
取决于您是否需要最终用户知道他正在连接到“另一台服务器” - 即 App2 - 您可以使用 Oauth2 授权 - https://www.youtube.com/watch?v=zUG6BHgJR9w
选项 1. 对我来说似乎是最好的解决方案
我有两个或更多 back-end API(Laravel) 项目和一个 front-end React JS 项目。在 front-end 应用程序中,我将调用所有 back-end API 项目。
当用户登录时,身份验证将签入App 1
(使用Laravel passport)和return access_token
.
我想在从 App 1
和 App 2
调用 API 时使用这些 access_token
。但是,主要问题是如何检查从 App 2
到 App 1
服务器的 access_token
验证。
为了解决这个问题,我认为但不确定它是否正确,我可以在 App 2
服务器中创建中间件并获取每个传入的 access_token
并将其发送以检查验证至 App 1
。如果return true,用户可以访问,否则不能访问。
但是,我认为这种方式是不合适的,因为从App 2
到App 1
,每个传入的请求都需要检查access_token
验证,这会减慢服务器和瓶颈问题。
我已经在 google 上搜索了很多帖子,但还没有找到最适合我的方法。我找到了一种 OAuth 服务器实现方式 https://www.youtube.com/watch?v=K7RfBgoeg48 但是,我认为这种方式在我的项目结构中效果不佳,因为我有很多自定义项。
我也看了reddit上的讨论(https://www.reddit.com/r/laravel/comments/dqve4z/same_login_across_multiple_laravel_instances/),但是还是没看懂。
这里有几个选项:
我希望您有一个数据库,其中包含您的用户的所有访问和刷新令牌 - 因此只需创建一个从 App2 后端服务器到包含您的访问和刷新令牌的数据库的数据库访问,然后检查他们通过新的数据库连接直接在 App2 中。
创建将检查从 App2 到 App1 的用户身份验证的中间件,但正如您正确指出的那样,这会导致额外的加载时间。
取决于您是否需要最终用户知道他正在连接到“另一台服务器” - 即 App2 - 您可以使用 Oauth2 授权 - https://www.youtube.com/watch?v=zUG6BHgJR9w
选项 1. 对我来说似乎是最好的解决方案