“用户”微服务 - 使用护照

时间:2017-10-06 00:49:24

标签: php laravel rest api oauth

我正在开发一个用于用户管理的微服务,它将由以下人员使用:

  • 其他微服务
  • SPA应用
  • 原生应用

需要:

  • 验证用户
  • 授权用户
  • 管理oauth令牌
  • 管理注册/登录/注销/重置密码/忘记密码

它将是一个纯REST API(没有形式)。

到目前为止,我有:

  • 安装/配置了Laravel护照和Passport :: Routes()
  • 配置了密码授予客户端
  • 这两个组合允许我点击oauth/token端点以获取有效的JWT令牌,并使用它成功地通过“auth:api”身份验证调用api/user

对于我的下一个技巧,我需要配置上面的所有用户管理端点(注册/忘记密码/等),我试图找出最好的方法来做到这一点。我试图避免使用第三方mod的Laravel(dingo,esbenp / larapi等),除非我必须这样做。

这意味着需要实施Auth::routes()Passport::routes()Passport::routes()似乎完全没问题。但Auth::routes()并非针对REST API设计。

我现在的想法是,在不重新发明轮子的情况下实现标准用户管理功能的最佳方法是重新实现App\Http\Controllers\Auth命名空间中控制器所消耗的特性。这些是:

  • 照亮\基金会\验证\ AuthenticatesUsers
  • 照亮\基金会\验证\ RedirectsUsers
  • 照亮\基金会\验证\ RegistersUsers
  • 照亮\基金会\验证\ ResetsPasswords
  • 照亮\基金会\验证\ ThrottlesLogins
  • 照亮\基金会\验证\ SendsPasswordResetEmails

由于php traits的工作方式,这可以有选择地完成,只需重新实现必要的功能,如下:

class ForgotPasswordController extends Controller
{
    use SendsPasswordResetEmails, MySendsPasswordResetEmails 
    {
        // REPLACE THE HTML FORM WITH A JSON PLACEHOLDER
        MySendsPasswordResetEmails::showLinkRequestForm insteadof SendsPasswordResetEmails;
        // REPLACE THE HTML RESPONSE WITH A JSON RESPONSE
        MySendsPasswordResetEmails::sendResetLinkResponse insteadof SendsPasswordResetEmails;
    }
}

它仍然完全可怕,但它似乎是避免重复代码的最佳方法。我想知道:

  • 这是一个好主意
  • 如果有人对如何做到这一点有任何建议
  • 如果有任何关于修改身份验证特征的文档
  • 理想情况下,如果有人以前做过吗?

tbh,我甚至没有开始考虑授权部分,但我认为这将基于身份验证。

谢谢!

0 个答案:

没有答案