Laravel Passport 如何将访问令牌传递给js?

问题描述 投票:0回答:1

我想问一下如何取回当前用户的accessToken? 背景:我想开发一个需要用户身份验证的api。

现在,我可以通过以下方式创建 accessToken $accessToken = $user->createToken('auth_token')->accessToken;

但是我在哪里可以获取 $accessToken 呢?我已经对此做了一些研究,我不应该将 accessToken 存储在数据库中,我可以取回当前用户令牌的一些详细信息 例如: 我可以通过定义一对多关系来取回用户令牌 $用户->令牌->每个(函数($令牌){

})

但是只能取回oauth_access_tokens表中的字段,无法取回accessToken。

我想做的是,获取accessToken,并将其传递给前端js。

我有几个问题要问:

1:将accessToken直接从后端传递到前端是否是正确的方法,因为我在想如果有人能够通过开发工具查看brearer令牌,那么用户凭证就会受到损害

2:如何通过token id取回访问令牌?或者我不应该再次取回accessToken?类似于一些api token服务,你只能在创建token的时候获取accessToken,创建完token后,你必须把它存储在本地,服务器就不会再告诉你access token了?

谢谢!!!我知道我问了很多愚蠢的问题。

php laravel api laravel-passport
1个回答
0
投票

1-将访问令牌直接从后端传递到前端不是 受到推崇的。访问令牌是敏感信息,应视为 秘密。将访问令牌暴露给前端会增加风险 如果攻击者设法拦截或获取令牌,则未经授权的访问。 相反,您应该使用其他机制来安全地进行身份验证和授权 前端API向后端请求。 通常,您将实现一个身份验证流程,其中前端将用户的凭据(例如用户名和密码)发送到后端。后端验证凭据,如果有效,则生成访问令牌。然后,此访问令牌通常作为响应负载的一部分发送回前端。

前端可以安全地存储访问令牌(例如,在安全的仅 HTTP cookie 中或本地存储中),并使用适当的授权标头(例如“Authorization:Bearer ”)将其包含在对后端 API 的后续请求中。然后,后端可以验证每个请求的访问令牌,以确保用户经过身份验证和授权。

2-Generally, once an access token is generated, you don't need to retrieve it 
 again from the backend. The backend stores the access token securely and 
 associates it with the user's session or authentication data. When a request 
 comes in with an access token, the backend can validate the token by checking 
 if it matches the stored token for the user and if it's still valid (e.g., not 
 expired).

如果您需要撤销或使访问令牌失效,您可以在后端实现令牌撤销机制。这可能涉及维护无效令牌的黑名单或撤销列表,并在令牌验证期间对其进行检查。

请记住,在实施用户身份验证和访问令牌处理以保护用户凭据和敏感数据时,遵循安全编码实践至关重要。

© www.soinside.com 2019 - 2024. All rights reserved.