Flask 烧瓶JWT加长型“;不允许指定的alg值";错误

Flask 烧瓶JWT加长型“;不允许指定的alg值";错误,flask,jwt,axios,flask-jwt-extended,flask-jwt,Flask,Jwt,Axios,Flask Jwt Extended,Flask Jwt,当使用(@JWT_requiredflask restful resources上的decorator)向需要JWT访问的flask路由发出请求时,我得到一个422不可处理实体,消息为:不允许指定alg值 登录并导航到调用请求的(前端)路由时: this.axios.get("/jobs").then(res => { console.log(res.data); this.jobs = res.data.jobs; }); 在同一个go中,它按预期工作,

当使用(
@JWT_required
flask restful resources上的decorator)向需要JWT访问的flask路由发出请求时,我得到一个
422不可处理实体
,消息为:
不允许指定alg值

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

this.axios.get("/jobs").then(res => {
      console.log(res.data);
      this.jobs = res.data.jobs;
    });
在同一个go中,它按预期工作,但是在刷新时,它会显示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;
  },
};
并在我的
main.js
中调用
init()
setHeader()
,因此我不明白为什么只有在刷新后才会导致错误


我找不到任何关于如何纠正
指定的alg值不允许
错误的资源。任何帮助都将不胜感激!:)

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

当JWT令牌是在spring boot auth服务中创建的,但资源服务是flask micro服务时,我遇到了相同的问题。我尝试了以下步骤来解决问题

  • 我在调试器中粘贴了令牌
  • 在右边,我找到了解码后的报头,其中alg值如下:
{
“alg”:“HS512”
}
  • 我将alg放在flask资源服务器的app config中,如下所示
app.config['JWT\u算法]='HS512'

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

中设置适当的算法。您能告诉我们如何生成令牌吗?
jwt
使用的算法存储在中-您可以在中设置
jwt extended
使用的算法。
jwt extended
中的一系列测试显示了算法上的差异是如何导致您所得到的错误的。@elembie感谢您的回复。我一直在遵循文档中的基本用法。我设置的唯一配置选项是
JWT\u SECRET\u KEY
JWT\u BLACKLIST\u ENABLED
JWT\u BLACKLIST\u TOKEN\u CHECKS
。我没有改变默认的算法。令牌是由以下程序生成的:
access\u-token=create\u-access\u-token(identity=data[“username”])
。我还尝试将
JWT\u算法更改为
RS256
,设置私钥和公钥,但仍然存在相同的问题。您是否验证了令牌正在从安全存储中正确检索?我只是在想,jwt的
jwt
可能已经被修改过了——可能会在服务器和客户端上打印出来,然后检查它是否没有被修改。