0

当向需要使用 JWT 访问的烧瓶路由发出请求时(@jwt_required烧瓶休息资源上的装饰器),我收到一条422 UNPROCESSABLE ENTITY消息:The specified alg value is not allowed.

登录并导航到调用请求的(前端)路由时:

this.axios.get("/jobs").then(res => {
      console.log(res.data);
      this.jobs = res.data.jobs;
    });

同样,它按预期工作,但是在刷新时它会显示 422 错误。我将令牌存储在 localstorage 中并将其加载到 axios 标头中,如下所示:

const api = {
  init: function() {
    Vue.use(VueAxios, axios);
    Vue.axios.defaults.baseURL = DEV_URL;
  },

  setHeader: function() {
    const token = `Bearer ${getToken()}`;
    Vue.axios.defaults.headers.common["Authorization"] = token;
  },
};

init()并打电话给setHeader()main.js,所以我很困惑为什么这只是在刷新后才导致错误。

我无法找到任何有关如何纠正The specified alg value is not allowed错误的资源。任何援助将不胜感激!:)

4

2 回答 2

1

当在我的 Spring Boot 身份验证服务中创建 JWT 令牌但资源服务是烧瓶微服务时,我遇到了同样的问题。我尝试了以下步骤来整理它,

  • 我将令牌粘贴到jwt.io调试器中。
  • 在右侧,我找到了解码的标头,其中 alg 值如下,
    {
      "alg": "HS512"
    }
  • 我将 alg 放在烧瓶资源服务器的应用程序配置中,如下所示,
    app.config['JWT_ALGORITHM'] = 'HS512'

之后错误消息消失了,我能够从解码的令牌中解析信息。因此,您需要找到生成令牌的算法并在烧瓶中设置适当的算法app.config

于 2020-07-27T21:20:17.533 回答
-1

如果令牌是使用不同的算法创建的,则可能会发生这种情况app.config['JWT_ALGORITHM']

于 2019-10-24T15:46:33.850 回答