当前位置: 首页 > 知识库问答 >
问题:

拉勒维尔圣所只生成访问令牌吗?

周子平
2023-03-14

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

#它创建了一个用于API身份验证的中间件

#当用户尝试登录时,它会生成access_tokens并返回到前端。前端然后使用它的前端存储记住这个令牌号,如local存储()会话存储()等。

#当用户尝试<code>注销</code>时,我们只需<code>从<code>前端存储

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

共有1个答案

陆俊迈
2023-03-14

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

通常,对于位于您同一域上的SPA应用程序,无需使用令牌。Sancta将简单地使用使用cookie的标准身份验证。

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

对于此功能,Sanctum不使用任何类型的令牌。相反,Sanctum使用Laravel内置的基于cookie的会话认证服务。

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

要使用令牌身份验证,您需要手动颁发令牌,如下所述:https://laravel.com/docs/9.x/sanctum#issuing-mobile-api-tokens

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

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

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

当移动应用程序使用该令牌向应用程序发出 API 请求时,它应将授权标头中的令牌作为持有者令牌传递。

基本上,如果您的SPA位于同一域中,则无需关心令牌。您只能继续使用 cookie 和会话。

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

请注意,如果您不愿意,您实际上甚至不需要为第三方应用程序使用令牌。您也可以使用cookie和会话,但是这可能会导致扩展问题,因为Laravel向每个人、访客或经过身份验证的人提供会话cookie,因此您的后端会话(如redis)对于第三方应用程序/API将增长非常快。然而,对于令牌,它只在登录时生成它们,因此规模要小得多。

 类似资料:
  • 我一直在尝试使用简单的REST客户端以及Mozilla的REST插件。我收到“HTTP/1.1 401未授权”响应,正文中带有“{”error:“unauthorized_client”、“error_description”:“客户端未授权”}。 我已经成功获取了auth码,下面是访问令牌的POST请求,(范围r_fullprofile) https://www.linkedin.com/uas

  • 当我尝试使用以下命令生成访问令牌时: 它抛出的错误为: {“error_description”:“缺少必需的参数,包括无效的参数值,参数多次。:无法检索访问令牌:appId或重定向uri与授权码不匹配或授权码过期”,“error”:“invalid_request”}。 你能在这个问题上指导我吗?

  • https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res

  • 我正在尝试生成访问令牌来收集领英数据。我按照领英API文档中提供的说明进行了操作。我在开发人员页面中创建了一个应用程序并获得了以下内容: 使用API密钥,我生成了带有URL的authorization_code: https://www.linkedin.com/uas/oauth2/authorization?response_type=code 但是当我最终尝试使用以下URL生成访问令牌时,我

  • 从留档我看到它可以创建一个laravel项目通过laravel安装程序: 或通过作曲家: 如果我尝试第一种方法。未创建环境文件。我怎样才能让拉威尔、工匠或作曲家创作一部作品呢。我的环境文件?

  • 当我试图在访问令牌过期之前使用刷新令牌生成访问令牌时,系统会生成一个新令牌,并且一切正常。但是如果访问令牌过期,则请求返回。 中的方法不是使用我从以前的访问令牌中存储在字典中的标识生成访问令牌吗? 如果上一个更新令牌尚未过期,如何阻止客户端使用相同的刷新令牌请求新的访问令牌? oauthProvider.cs: RefreshTokenProvider.cs: 对不起,英语不好,希望你能理解!