Laravel 8:在 API 中使用 Fortify

Laravel 8: Using Fortify in APIs

Laravel Fortify 可以在 API 的上下文中使用吗?据我了解,Fortify(虽然是无头的,即不包含 UI 层)允许我们自定义登录和注册页面,但它会在成功验证后自动重定向到主页页面。尽管主页是可自定义的,但这并不是 API 登录的正常工作方式。它应该只是 return 一个 JSON 格式的成功标记,没有任何类型的重定向。

Fortify 中有一个 authenticateUsing 函数,但即便如此,我们也只能自定义身份验证逻辑,而不是 returned 数据。重定向仍由 Fortify 执行。

如何在 REST 上下文中使用 Fortify API?

注意:我将从我的 Vue 前端应用程序中使用它。我也打算让 Sanctum 进入游戏,但在此之前我只是想看看我是否可以使用 Fortify 进行常规的基于令牌的身份验证而无需编写自己的登录名,注册以及注销路线和控制器功能。

身份验证可以是 Session-based 或 Token-based。

Laravel Fortify 仅为 session-based 身份验证提供后端逻辑必需品,因此不适用于 token-based API 身份验证。

如果您需要 token-based API 身份验证,您可以使用 SanctumPassport,具体取决于您的需要。但是无论哪种情况,您都必须编写一些代码。

如果您决定使用 Laravel Passport,我有一个可能有用的样板项目:https://github.com/pktharindu/laravel-api-boilerplate-passport

只需将 'Accept' header 设置为 'application/json' 或 'application/javascript' 然后 fortify 将响应 json 格式化 body 而不是重定向.

顺便说一下,使用 Sanctum 而不是 SPA 的 Passport 更容易安全地保存令牌。 google 关于在何处存储 SPA 的 API 令牌,然后您会发现原因。