【问题标题】:Laravel 5/AngularJS custom authentication best practiceLaravel 5/AngularJS 自定义认证最佳实践
【发布时间】:2018-02-22 15:44:08
【问题描述】:

我正在开发一个使用 Laravel 5.3 作为后端和 AngularJS 作为前端的应用程序。对于身份验证,用户的信息需要与外部 API 进行匹配。为此,我一直在使用 Laravel 内置身份验证的自定义版本,即,

  1. 用户输入信息
  2. AngularJS 前端发送到 Laravel 后端
  3. Laravel 使用 Auth::login 来检查外部 API
  4. 要么告诉用户他们的凭据错误,要么将其移至主页

我的问题是,从那时起,继续使用 Laravel 的内置身份验证中间件功能来查看用户在应用程序中移动时是否经过身份验证是一种不好的做法吗?

我正在阅读的所有内容似乎都在讨论使用基于令牌的身份验证(主要是 JWT),虽然我的方法确实有效,但我是 AngularJS 的新手,并希望确保我正在做的事情遵循最佳实践。

谢谢!

【问题讨论】:

    标签: angularjs authentication laravel-5


    【解决方案1】:

    就最佳实践而言,有很多不同的方法可以实现。您可以使用 laravel 内置的身份验证,但您必须确保会话 ID 随每个请求不断发送,否则 Auth::user 将为空。

    当涉及到 API 时,您通常不希望拥有会话数据,人们使用 JWT 或 OAUTH 等令牌的主要原因是因为它们是无状态的(大部分情况下)。如果您使用 JWT 令牌,那么您可以添加一个额外的 middelware,如下所示:

    if (JWTAuth::getToken()) {
            JWTAUth::parseToken()->authenticate();
        }
    

    当您执行此类操作时,laravel 的身份验证方法将按预期工作。这将与包附带的 jwt.auth 中间件结合使用。希望能把事情弄清楚一点:)

    【讨论】:

    • 感谢您的洞察力!我想我明白你在说什么,尽管我对实施仍然有些模糊。你对使用 Laravel 的 Passport 包有什么想法吗?
    • 用这种方法实现只是为了确保我描述的中间件在任何 laravel 标准 auth 中间件之前使用。我从未使用过 Laravel 的 Passport 包,但从我在文档中读到的内容来看,它也是一个基于令牌的服务,如 JWT。它可能更容易实现,因为它来自 laravel 本身。我会按照文档Laravel Passport 进行操作,您应该通过身份验证到达您想要的位置:)
    猜你喜欢
    • 2011-01-11
    • 2018-09-24
    • 2023-03-22
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多