【发布时间】:2020-02-28 20:20:29
【问题描述】:
我正在尝试为管理员登录创建一个网站,以将数据添加到数据库中。实际上,当他们登录网络时,我已经为管理员编写了一个 API。 jwt 将生成访问令牌,传递到前端并保存到用户的本地存储。我知道 jwt 可以添加到用户请求的标题中。
但是如何让后端知道用户发送的访问令牌是有效的呢?
在我的数据库中,我有一个保存用户电子邮件和散列密码的用户表。当用户调用带有标头的API时,后端解码访问令牌以获取用户的电子邮件并搜索数据库是否是一种好方法?
我用于登录网络的 Lambda 函数的这一部分:
const { JWT_SECRET } = process.env
const accessToken = jwt.sign(
{ username: event.username },
JWT_SECRET,
{ expiresIn: '7days' }
)
也在我的数据库中。数据结构为:
{
'email": "***",
"id": "*",
"password": "***",
"username": "***"
}
在前端,假设有一个 API 可以发送新数据:
export const addNewData = function (accessToken, newValue) {
return apiClient.post(***API endpoint***',
newValue, {
headers: {
Authorization: `Bearer ${accessToken}`
}
})
【问题讨论】:
-
您可以在后端解码 jwt 令牌以检查其有效性。您可以创建令牌,使其包含来自用户的一些唯一数据,例如用户 ID。然后您可以使用该用户 ID 来获取用户数据。
-
你能在这里放一些你刚刚为它做的代码吗??
-
@RajarshiDas 我添加了一些代码
标签: node.js reactjs amazon-dynamodb