繁体   English   中英

laravel sanctum 是否只生成access_token?

[英]Does laravel sanctum only generate access_token?

我试图了解 SPA(vuejs) 应用程序中laravel sanctum所的基本流程。 到目前为止,我的理解是:

#它为API认证创建一个中间件

#当用户尝试登录时,它会生成access_tokens并返回到前端。 然后前端使用它的frontend storages (如localStorage()sessionStorage()等) remembers这个令牌号。

#当用户尝试logout时,我们只需从frontend storagedatabase table delete access_tokens

如果我遗漏了什么或犯了错误,请纠正我。

Sanctum 不仅使用令牌进行身份验证,还进行常规的 session 身份验证。 身份验证方法是根据请求自动确定的,如果它来自同一域,则使用 cookie/session 进行身份验证,如果请求来自不同的域或未找到 session cookie,则尝试令牌身份验证。

通常对于同一域中的 SPA 应用程序,不需要使用令牌。 Sanctum 将简单地使用使用 cookies 的标准身份验证。

https://laravel.com/docs/9.x/sanctum#how-it-works-spa-authentication

对于此功能,Sanctum 不使用任何类型的代币。 相反,Sanctum 使用 Laravel 内置的基于 cookie 的 session 身份验证服务。

如果您的前端位于不同的域或移动设备上,sanctum 将检查请求标头中的令牌。

要使用令牌身份验证,您需要按照此处的说明手动发出令牌: https://laravel.com/docs/9.x/sanctum#issuing-mobile-api-tokens

通常,您将从移动应用程序的“登录”屏幕向令牌端点发出请求。 端点将返回纯文本 API 令牌,然后可以将其存储在移动设备上并用于发出额外的 API 请求

return $user->createToken($request->device_name)->plainTextToken

登录后,将令牌存储在 localStorage 或本地 session 中,您需要将此令牌包含在移动或第三方前端的授权标头中。

当移动应用程序使用令牌向您的应用程序发出 API 请求时,它应该在授权 header 中将令牌作为 Bearer 令牌传递。

如果您的 SPA 在同一个域中,基本上您不需要关心令牌。 您可以继续使用 cookies 和 session。

如果您的前端是移动的或在不同的域上,首选方法是使用令牌,您需要手动调用登录 API 并将令牌响应存储在 localStorage 或本地 session 上。

请注意,如果您不想,实际上您甚至不需要为 3rd 方应用程序使用令牌。 您也可以使用 cookies 和 session,但这可能会导致缩放问题,因为 Laravel 会向所有人、来宾或经过身份验证的人发出 session cookie,因此您的后端 session(例如 882066607567188)对于 apps/APIrd party 应用程序/应用程序/第三方应用程序/应用程序发展非常快但是,对于令牌,它仅在登录时生成它们,因此规模要小得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM