token (authmiddleware.js file) in Mern Stack Application"/>
Error: Not authorized, no token (authmiddleware.js file) in Mern Stack Application
所以这是我面临的最奇怪的错误,自从我试图解决这个问题以来已经有很多天了。但我做不到。如果有人可以,请帮助我。
关于App的功能
我正在构建巴士票预订系统,我希望我的管理员用户可以在其中创建、添加、更新和删除巴士。我能够创建、添加和删除总线,但 not update 因为它抛出未找到令牌的错误,尽管我正在发送令牌。
//前端
busSlice.js
export const updateBus = createAsyncThunk(
"buses/edit",
async (id, thunkAPI) => {
try {
const token = thunkAPI.getState().auth.user.token;
return await busService.updateBus(id, token);
} catch (error) {
const message =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
return thunkAPI.rejectWithValue(message);
}
}
);
busService.js
export const updateBus = async (id, token) => {
const config = {
headers: {
Authorization: `Bearer ${token}`,
},
};
console.log(token);
const response = await axios.put(API_URL + id, config);
return response.data;
};
//后端
server.js
app.use(express.json());
app.use("/api/users", userRoutes);
app.use("/api/buses", busRoutes);
router.js
import protect from "../middlewares/authMiddleware.js";
router.route("/").get(protect, getBuses).post(protect, createBus);
router
.route("/:id")
.get(protect, getBusById)
.delete(protect, deleteBus)
.put(protect, updateBus);
authmiddleware.js
const protect = asyncHandler(async (req, res, next) => {
let token;
if (
req.headers.authorization &&
req.headers.authorization.startsWith("Bearer")
) {
try {
// Get token from header
token = req.headers.authorization.split(" ")[1];
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = await User.findById(decoded.id).select("-password");
next();
} catch (error) {
console.log(error);
res.status(401);
throw new Error("Not authorized");
}
}
if (!token) {
res.status(401);
throw new Error("Not authorized, no token");
}
});
我已经签入邮递员,它在应用不记名令牌的情况下工作正常。但是当我从前端尝试时它会导致错误,尽管相同的代码适用于创建、列出和删除。顺便说一句,我正在使用 jwt.
有人可以帮我吗?比如问题是什么以及如何解决。
回答如下:更多推荐
Error: Not authorized, no token (authmiddleware.js file) in Mern Stack Applicati
发布评论