我在请求获取访问令牌时总是收到 500 Internal Server Error"/>
为什么我在请求获取访问令牌时总是收到 500 Internal Server Error
我提供了在正文中创建 jwt 所需的用户名和密码,但我总是收到 500 内部服务器错误,但如果我不提供用户名或密码,我会收到我的错误信息,即请提供电子邮件和密码
const jwt = require("jsonwebtoken");
const { BadRequestError } = require("../errors");
const login = async (req, res) => {
const { username, password } = req.body;
if (!username || !password) {
throw new BadRequestError("Please provide email and password");
}
const id = new Date().getDate();
const token = jwt.sign({ id, username }, process.env.JWT_SECRET, {
expiresIn: "30d",
});
res.status(200).json({ msg: "user created", token });
};
我期待当我发布请求时 http://localhost:5000/api/v1/login 我获得访问权限
回答如下:我的登录方法是在Node.js中用TypeScript写的。但你可以用 JavaScript 编写它。 这是我的登录方法:
import express from "express";
import {User} from "../model/user";
import bcrypt from "bcryptjs"
import jwt from "jsonwebtoken";
import {SECRET_JWT} from "../../utility/constant";
export const userRouter = express.Router()
userRouter.post(`/login`, loginUser)
export async function loginUser(req: any, res: any)
{
let wantedUser = await User.find`enter code here`One({
email: req.body.email
})
if (!wantedUser)
{
return res.status(404).json({
Message: 'Wanted user was not found!'
})
}
else
{
if (bcryptpareSync(req.body.password, wantedUser['passwordHash']))
{
let token = jwt.sign(
{
userId: wantedUser['id'],
isAdmin: wantedUser['isAdmin'],
},
SECRET_JWT,
{
expiresIn: '1d', // Ite means 1 day. You can use 1w for 1 week!
algorithm: 'HS256'
}
)
res.status(200).json({
user: wantedUser['email'],
token: token
})
}
else
{
res.status(400).json({
Message: 'Password is wrong!'
})
}
}
}
更多推荐
为什么我在请求获取访问令牌时总是收到 500 Internal Server Error
发布评论