如何解决JWT 不会自动在 cookie 中设置
我在使用 JWT 凭据时遇到了严重问题。
我使用 node.js 作为后端,使用 angular9 作为前端。
在我的后端,我实现了用于登录的 API,它为用户创建了一个新的 JWT,并返回用户详细信息,如下所示:
@Post("signin")
@Middleware([
body("email").isEmail().withMessage("Email must be valid"),body("password")
.trim().isLength({ min: 6,max: 20 }).withMessage("Password must be between 6 and 20 characters"),validateRequest,])
private async signin(req: Request,res: Response) {
AppLogger.getLogger().info(`signin request made:\n ${JSON.stringify(req.body)}`);
const { email,password } = req.body;
const existingUser = await User.findOne({ email });
if (!existingUser) {
throw new BadRequestError("Can not find user");
}
const passwordsMatch = await Password.compare(
existingUser.password,password
);
if (!passwordsMatch) {
throw new BadRequestError("Invalid Credentials");
}
const userJwt = jwt.sign(
{
id: existingUser.id,email: existingUser.email,admin: existingUser.admin,},process.env.JWT_KEY!
);
req.session = {
jwt: userJwt,};
res.status(200).send(existingUser);}
我希望这个 JWT 会自动设置到我的前端 cookie 中,以便在其他 http 请求中进行身份验证。但是,在我登录并尝试从后端执行 GET 请求后,它抛出“未授权”。
我尝试将请求标头“withCredentials: true”添加到 GET 请求中。
{
"/api/*": {
"target": "http://localhost:4000","secure": false,"logLevel": "debug"
}}
但它也没有解决问题。
我的前端代码:
checkAuthenticated(userDetails: userAttr): Promise<userDoc> {
return this.http.post<userDoc>(`${environment.BE_ENDPOINT}/api/users/signin`,userDetails).toPromise();}
感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。