【发布时间】:2020-11-13 16:26:09
【问题描述】:
这篇文章只是想知道我的方法/代码是否没有引入任何开销并且在安全性方面是否足够。 Technology used: NodeJS, JWT, ExpressJS, mongoose(mongoDB)
以下是用户模式:
const userSchema = mongoose.Schema({
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
accessToken: {
type: String
}
});
现在我的代码实现了以下内容:
-
每次用户登录他的帐户时,生成的访问令牌(JWT)都会保存到用户帐户(在数据库中)。每当请求需要身份验证时,例如:
GET /api/user/myprofileJWT 在Authorization标头中与此请求一起发送,并使用已保存在数据库中的令牌进行检查(正如我之前提到的),因此没有其他人访问旧的有效 JWT 可以访问用户帐户。除此之外,经过身份验证的路由还有一个中间件功能,可以验证 JWT,这是必不可少的。 -
同样的检查也对
/logout端点进行。如果 Authorization 标头中的令牌(JWT)与用户数据库中的令牌不同,则会引发 403 错误,因此具有有效令牌的攻击者无法连续注销用户。
就令牌管理而言,这足以提供安全性吗?有什么我遗漏的强制性内容吗?
谢谢。
【问题讨论】:
标签: node.js express security mongoose jwt