我试图了解laravel sanctumSPA(vuejs) 应用程序的基本流程。到目前为止我的理解是:
它创建一个用于 API 身份验证的中间件
当用户尝试登录时,它会生成access_tokens并返回到前端。前端然后remembers使用它的令牌编号,frontend storages等等。localStorage()sessionStorage()
当用户尝试时logout,我们只需从两者中delete选择access_tokensfrontend storagedatabase table
如果我遗漏了什么或犯了错误,请纠正我。
Sanctum 不仅使用令牌进行身份验证,还进行常规会话身份验证。身份验证方法根据请求自动确定,如果来自同一域,则使用 cookie/session 进行身份验证,如果请求来自不同域或未找到会话 cookie,则尝试令牌身份验证。
通常,对于位于同一域中的 SPA 应用程序,不需要使用令牌。Sanctum 将简单地使用使用 cookie 的标准身份验证。
https://laravel.com/docs/9.x/sanctum#how-it-works-spa-authentication
对于此功能,Sanctum 不使用任何类型的代币。相反,Sanctum 使用 Laravel 内置的基于 cookie 的会话身份验证服务。
如果您的前端位于不同的域或移动设备上,则 sainttum 将检查请求标头中的令牌。
要使用令牌身份验证,您需要手动颁发令牌,如下所述: https: //laravel.com/docs/9.x/sanctum#issuing-mobile-api-tokens
通常,您将从移动应用程序的“登录”屏幕向令牌端点发出请求。端点将返回纯文本 API 令牌,然后该令牌可能会存储在移动设备上并用于发出其他 API 请求
return $user->createToken($request->device_name)->plainTextToken
Run Code Online (Sandbox Code Playgroud)
登录后,您将令牌存储在 localStorage 或本地会话中,您需要将此令牌包含在移动或第三方前端的授权标头中。
当移动应用程序使用令牌向您的应用程序发出 API 请求时,它应该将授权标头中的令牌作为承载令牌传递。
基本上,如果您的 SPA 位于同一域中,则无需关心令牌。您可以继续使用 cookie 和 session。
如果您的前端是移动的或位于不同的域,首选方法是使用令牌,并且您需要手动调用登录 API 并将令牌响应存储在 localStorage 或本地会话上。
但请注意,如果您不愿意,实际上甚至不需要为第三方应用程序使用令牌。您也可以使用 cookie 和 session,但这可能会导致扩展问题,因为 Laravel 向每个人(访客或经过身份验证的人)提供会话 cookie,因此您的后端会话(例如 redis)对于第 3 方应用程序/API 来说将增长得非常快。然而,对于令牌,它仅在登录时生成它们,因此规模要小得多。
| 归档时间: |
|
| 查看次数: |
3147 次 |
| 最近记录: |