创建通过外部 API 进行身份验证的自定义身份验证提供程序?

Posted

技术标签:

【中文标题】创建通过外部 API 进行身份验证的自定义身份验证提供程序?【英文标题】:Create a custom auth provider that authenticate through an external API? 【发布时间】:2017-05-12 02:06:44 【问题描述】:

我是 Laravel 的新手。

我已经有一个 API 可以对用户进行身份验证并为其创建 JWT 令牌。现在在我的新应用中,我想将 authenticationauthorization 外包给这个 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 授权方对突变进行身份验证

Laravel 5 通过外部 API 对用户进行身份验证

使用 Laravel 验证第三方 JWT

使用 IdentityServer 与创建基于 JWT 的自定义身份验证

通过使用 AngularJS 的自定义登录进行 Spring Security 身份验证

JWT 身份验证不适用于 Django 中的自定义控制器