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'
之后,错误消息消失了,我能够解析解码令牌中的信息。因此,您需要找到生成令牌的算法,并在flaskapp.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
可能已经被修改过了——可能会在服务器和客户端上打印出来,然后检查它是否没有被修改。