Passport是否使用警卫不是对用户进行身份验证,而是在需要这些令牌的路由上验证访问令牌?



我对文档有点困惑。这是说:

Passport包含一个身份验证保护,它将验证访问标记对传入请求。一旦将api guard配置为使用护照驱动程序,您只需要指定auth:api上的中间件,任何需要有效访问令牌的路由.

因此,这意味着Passport不是使用警卫来验证用户,而是在需要这些令牌的路由上验证访问令牌。我没记错吧?

在本例中,验证访问令牌验证用户。为了理解为什么会出现这种情况,让我们浏览一个使用jwt的简化身份验证流(让我们暂时忽略oAuth2)。

  1. 用户正在登录网站。这将触发POST /login请求,在请求体中包含usernamepassword
  2. 后端验证用户凭证。如果凭据有效,它将发出一个JWT,它将充当访问令牌。JWT有效负载将包含一些允许后端识别用户的数据,例如用户id。然后JWT用一个只有后端知道的秘密签名。
  3. 后端将返回访问令牌给客户端,客户端必须在任何后续的服务器请求中包含访问令牌。通常,客户端会在Authorization报头中提供令牌。
  4. 当处理来自客户端的下一个请求时,后端将从Authorization头中提取访问令牌并检查其签名。如果签名有效,后端可以确保令牌数据没有被操纵,例如通过更改访问令牌上的用户id。使用有效的签名,后端可以从令牌负载中提取用户id,并将该特定id的User模型设置为已验证。如果签名无效,后端可能会返回401 Unauthorized

最新更新