用户首先登录。一旦用户通过登录过程,或者我们说一旦用户经过身份验证,您会签署一个JWT令牌并将其发送给用户。这是Node.js代码片段:
async postLogin(req, res, next) {
const token = jwt.sign({ _id: this._id, email: this.email }, "this-is-secret", {
expiresIn: "1h",
res
.status(200)
.header("x-auth-token", token)
.json({ token, userId: existingUser._id.toString() });
});
}
现在客户端将把它保存到localStorage中(为了简单起见,我使用localStorage)。在客户端,用户发送登录请求并获取我上面发送的内容。它将取出令牌并保存。由于它是异步请求,因此代码如下所示。以下是一个小的React代码示例:
.then(resData => {
localStorage.setItem('token', resData.token);
localStorage.setItem('userId', resData.userId);
关于令牌,浏览器不会自动发送它,因此客户端必须手动将其附加到请求中。
fetch(url, {
method: "post",
headers: {
Authorization: 'Bearer ' + localStorage.getItem('token')
}
})
当服务器收到请求时,您需要检查传入的令牌是否有效,如果是有效的令牌,则授权用户访问某些路由或服务。因此,用户将被授权。
认证是识别用户并验证他们所声称的身份的过程。最常见和明显的身份认证因素之一是密码。如果用户名与密码凭据匹配,则意味着身份是有效的,系统会授予用户访问权限,因此我们说用户已通过身份验证。