我将 JWT 令牌作为 HTTPonly Cookie 从我的 React 应用程序发送到我的 express 服务器以授权用户。
令牌正在请求标头中发送,但我无法在服务器中间件中访问它。
这是应该处理授权的中间件,但我无法从标头访问 accessToken 并获取 ResolveName(
ambiguousName,
ResolveNameSearchLocation.DirectoryOnly,
true,
view.PropertySet);
。
response status 403
我使用 cors 并将凭据设置为 true,并将源设置为我的网络应用程序。
const jwt = require("jsonwebtoken");
require("dotenv").config();
module.exports = function(req, res, next) {
// Get token from header
const token = req.header('accessToken');
// Check if no token
if (!token) {
return res.status(403).json({ msg: "authorization denied" });
}
// Verify token
try {
//it is going to give use the user id (user:{id: user.id})
const verify = jwt.verify(token, process.env.jwtSecret);
req.user = verify.user;
next();
} catch (err) {
res.status(401).json({ msg: "Token is not valid" });
}
};
这是我路线的重要部分:
app.use(cors({origin: 'http://localhost:3001', credentials: true }));
这是我的 express.js 服务器:
const express = require('express');
const authorize = require('../middleware/authorize')
const router = express.Router();
router.get("/verify", authorize, (req, res) => {
try {
res.json(true);
} catch (err) {
console.error(err.message);
res.status(500).send("Server error");
}
});
module.exports = router
提前致谢,感谢您的努力。
答案 0 :(得分:0)
您的 httpOnly
cookie 是作为 cookies 来回发送的,而不是作为它们自己的标头!由于您已经拥有 cookie-parser 中间件,您应该能够像这样获取访问令牌:
const token = req.cookies.accessToken;