【问题标题】:Laravel Auth Integration with React FrontendLaravel Auth 与 React 前端的集成
【发布时间】:2018-08-11 07:18:18
【问题描述】:

无法在 Google 上找到确切的答案,我正在尝试将 Laravel 的身份验证系统与 React 集成,以便我的开发人员可以在前端使用用户数据

在 Laravel 中你可以做一些事情,比如

Auth::user()->id

我希望这些数据在前端可用(以及如下代码)

Auth::check()

当用户登录到 React 应用程序时,它会将数据发送到后端,我是否需要他向后端发送请求以检查登录等?如果我们不使用 Laravel 前端,如果他们通过前端登录,Auth::check() 会返回 true 吗?

我对仅使用 Laravel 作为后端有点陌生,所以如果这个问题有一个明显的答案,我深表歉意

谢谢

  • 扎克

【问题讨论】:

标签: php laravel reactjs authentication


【解决方案1】:

如果您使用 React 和 Laravel 构建单页面应用程序,最常见的方法是使用 Javascript Web 令牌 (JWT) 进行 API 身份验证。

Laravel 没有自带 API 身份验证方法。但是,Laravel Passport (https://laravel.com/docs/master/passport) 或其他流行的库,如 JWT Auth (https://github.com/tymondesigns/jwt-auth) 提供了这一层。

使用 API 身份验证时,客户端(在本例中为 React 前端)会在用户提交凭据时将用户凭据发送到登录 API 端点。然后 Laravel 对用户进行身份验证,如果用户身份验证成功,则在 JSON 响应中返回一个 JWT(基本上是一个长字符串)(以及您可能想要返回的任何其他信息,例如用户名)。

然后可以将该 JWT 令牌保存到 cookie 或本地存储中,并用于对 API 的后续请求(通常在标头中发送)。您使用的 API Auth 库(例如 Passport)具有验证用户是否已通过身份验证并根据提供的 JWT 令牌提供用户对象的方法。

当我第一次学习这个时,有一个工作示例真的很有帮助。我使用了https://github.com/lijujohn13/react-laravel-auth,这是 Ali M 在 cmets 中提到的(谢谢!)。我还发布了我自己的示例 todo 应用程序 (https://github.com/devinsays/laravel-react-bootstrap),它使用 jwt-auth 库并且还对所有端点进行了测试。

【讨论】:

  • 我已阅读链接github.com/lijujohn13/react-laravel-auth。这是非常基本的,至少不使用用户名密码提供真正的身份验证。所以你的版本更好。现在,我必须决定我将使用哪种策略:仅 JWT 或 Passport。我会试试的。
  • 其实,在我目前的应用中,我使用了 Laravel 提供的内置认证(laravel.com/docs/5.7/authentication),因为我的 API 不是独立的,它是整个应用的一部分。登录表单是使用刀片(服务端)创建的,而不是在前端创建的。但是现在,我正在努力实现注销。如果我在客户端实现登录,则使用 React-Router 的历史记录和推送更容易实现注销。但这意味着,我必须使用 JWT 或 Passport 来实现身份验证机制,这将需要另外的努力和时间。
猜你喜欢
  • 2020-05-19
  • 2017-09-24
  • 2016-11-30
  • 2022-12-14
  • 2022-10-24
  • 2018-07-16
  • 2020-12-05
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多