创建通过外部 API 进行身份验证的自定义身份验证提供程序?
Posted
技术标签:
【中文标题】创建通过外部 API 进行身份验证的自定义身份验证提供程序?【英文标题】:Create a custom auth provider that authenticate through an external API? 【发布时间】:2017-05-12 02:06:44 【问题描述】:我是 Laravel 的新手。
我已经有一个 API 可以对用户进行身份验证并为其创建 JWT 令牌。现在在我的新应用中,我想将 authentication 和 authorization 外包给这个 API。
这个新应用就像 API 的前端,API 处理应用的逻辑。 我对这种架构并不完全熟悉,但我认为它是一种在物理上进行了划分的 3 层架构。 我的主要问题是处理用户身份验证以及如何将 API 的无状态逻辑转换为 Web 应用程序。
我应该创建自定义身份验证提供程序吗? 如何?你能举个例子吗!
【问题讨论】:
这实际上大部分已经在文档中了,你看过laravel.com/docs/5.3/…吗? 我不理解文档,顺便说一句,这与 API 无关! 【参考方案1】:谢谢大家,
但最终的解决方案是创建一个处理身份验证的中间件。例如,中间件通过表单对用户进行身份验证,并将 JWT 令牌保存在会话中。
这个简单的步骤解决了我所有的问题。
【讨论】:
hi alireza.. 你能提供你的中间件类供参考吗?【参考方案2】:我认为您正在寻找的是创建自定义警卫。 See docs here.
【讨论】:
您能解释一下它是如何工作的吗?抱歉,我是 laravel 新手 守卫处理 Laravel 中的所有身份验证逻辑,并在您的config/auth.php
中定义。创建自定义保护驱动程序时,您在该配置文件中注册它并确保该类实现此接口github.com/laravel/framework/blob/5.3/src/Illuminate/Contracts/…。要在 Laravel 中使用您的自定义防护驱动程序进行身份验证,请将您的自定义防护设置为该配置中的默认防护或直接在您的 Auth
外观中引用它,例如 Auth::guard('custom')->check($credentials)
以上是关于创建通过外部 API 进行身份验证的自定义身份验证提供程序?的主要内容,如果未能解决你的问题,请参考以下文章
通过 AppSync 上的自定义 Lambda 授权方对突变进行身份验证
使用 IdentityServer 与创建基于 JWT 的自定义身份验证