Flask JWT扩展“不允许使用指定的alg值”错误

时间:2019-10-23 01:18:07

标签: flask jwt axios flask-jwt-extended flask-jwt

当请求一个瓶罐路由的请求时,需要使用(在瓶瓶资源上的@jwt_required装饰器)访问JWT,我收到一条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错误,我找不到任何资源。任何援助将不胜感激! :)

2 个答案:

答案 0 :(得分:1)

当在我的spring boot auth服务中创建JWT令牌时遇到了相同的问题,但是资源服务是Flask Micro服务。我尝试了以下步骤进行整理,

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

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

答案 1 :(得分:0)

如果令牌是使用不同于app.config['JWT_ALGORITHM']

的算法创建的,则会发生这种情况