如何实现基于 Token 的 RESTful API 认证

在前端开发中,我们经常需要与后端进行数据交互。为了保证数据的安全性和可靠性,我们需要对 API 进行认证。本文将介绍如何实现基于 Token 的 RESTful API 认证。

什么是 Token 认证?

Token 认证是一种基于令牌的身份验证方式。在 Token 认证中,用户在登录成功后,会获得一个 Token。该 Token 会在每次请求 API 时被附加在请求头中,服务器会根据 Token 来判断该请求是否合法。

Token 认证相比传统的基于 Cookie 的认证方式,更加安全可靠。因为 Token 可以避免 CSRF 攻击,而且可以跨域使用。

实现 Token 认证的步骤

1. 登录

用户在登录成功后,服务器会生成一个 Token,并将 Token 存储在数据库中。服务器会将 Token 返回给客户端。

2. 发送 Token

客户端在发送请求时,需要将 Token 附加在请求头的 Authorization 字段中。例如:

-------------- ------ -----------------------------------------------------------------------------------------------------------------------------------------------------------

3. 验证 Token

服务器在接收到请求时,需要验证请求头中的 Token 是否合法。服务器可以通过以下方式来验证 Token:

  • 验证 Token 是否存在于数据库中;
  • 验证 Token 是否过期;
  • 验证 Token 是否被篡改。

如果 Token 验证成功,则服务器会处理请求;否则,服务器会返回 401 Unauthorized 错误。

示例代码

1. 登录

在登录成功后,服务器需要生成一个 Token,并将 Token 存储在数据库中。以下是一个 Node.js 的示例代码:

----- --- - ------------------------
----- ------ - -----------

-------- ---------- ---- -
  ----- -------- - ------------------
  ----- -------- - ------------------
  
  -- ------------
  -- --------- --- ------- -- -------- --- -------- -
    -- -- -----
    ----- ----- - ---------- -------- -- ------- - ---------- ---- ---
    
    -- - ----- -------
    -- ---
    
    -- -- -----
    ---------- ----- ---
  - ---- -
    ---------------------- -------- ---------- ---
  -
-

2. 发送 Token

在发送请求时,客户端需要将 Token 附加在请求头的 Authorization 字段中。以下是一个基于 Axios 的示例代码:

------ ----- ---- --------

----- ----- - ------------------------------

---------------------------------------------- - ------- ----------

3. 验证 Token

在服务器接收到请求后,需要验证请求头中的 Token 是否合法。以下是一个 Node.js 的示例代码:

----- --- - ------------------------
----- ------ - -----------

-------- ----------------- ---- ----- -
  ----- ----- - ---------------------------------- ------
  
  -- -------- -
    ------ ---------------------- -------- --- ------ ---
  -
  
  --- -
    ----- ------- - ----------------- --------
    -------- - --------
    -------
  - ----- ----- -
    ---------------------- -------- ------ -------- ---
  -
-

-------------------- ------------- ----- ---- -- -
  ----- ---- - ---------
  ---------- --------- ------------- ---
---

总结

基于 Token 的 RESTful API 认证可以提高 API 的安全性和可靠性。本文介绍了 Token 认证的基本原理和实现步骤,并提供了示例代码。希望本文能够对您有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/663eb8cad3423812e4cf6d78