我正在前端实现身份验证系统,登录和注销工作正常,但无法验证令牌(AxiosError)

问题描述 投票:0回答:1

我尝试确认中间件设置以及 auth.service 和 auth.context,增加接受的标头,并暂时将 CORS 允许的来源扩展到所有 (*)。由于错误不具体,我似乎无法继续前进。

我的终点:

const { isAuthenticated } = require("../middleware/jwt.middleware.js");

router.get("/verify", isAuthenticated, (req, res) => {
  console.log(`req.payload`, req.payload);
  res.status(200).json(req.payload);
});

我的中间件:

const { expressjwt: jwt } = require("express-jwt");
require("dotenv").config();

const isAuthenticated = jwt({
  secret: process.env.TOKEN_SECRET,
  algorithms: ["HS256"],
  requestProperty: "payload",
  credentialsRequired: false,
  getToken: getTokenFromHeaders,
});

function getTokenFromHeaders(req) {
  if (
    req.headers.authorization &&
    req.headers.authorization.split(" ")[0] === "Bearer"
  ) {
    const token = req.headers.authorization.split(" ")[1];
    return token;
  }
  return null;
}

module.exports = {
  isAuthenticated,
};

在 app.js 上:

app.use((req, res, next) => {
  res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
  res.setHeader("Access-Control-Allow-Origin", "http://localhost:5173");
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET, POST, PUT, DELETE, PATCH"
  );
  next();
});
app.use(isAuthenticated);

在我的 auth.service.js 上(确认我在这里不需要任何参数)

class AuthService {
(...)
verify = () => {
    // return axios.post("http://localhost:5005/users/verify");
    return this.api.get("/users/verify");
  };
}

最后在我的 auth.contextjs 上:(错误从 .verify() 开始,因为它直接记录错误):

const storeToken = (token) => {
    localStorage.setItem("authToken", token);
  };

  const authenticateUser = () => {
    const storedToken = localStorage.getItem("authToken");
    if (storedToken) {
      authService
        .verify()
        .then((response) => {
(...)
axios middleware bearer-token verify express-jwt
1个回答
0
投票

修好了! 验证端点是

POST
而不是
GET

© www.soinside.com 2019 - 2024. All rights reserved.