Error: Not authorized, no token (authmiddleware.js file) in Mern Stack Application

编程入门 行业动态 更新时间:2024-10-12 03:20:25

Error: Not authorized, no <a href=https://www.elefans.com/category/jswz/34/1770646.html style=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

本文发布于:2024-05-13 15:20:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759830.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:token   authmiddleware   Error   authorized   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!