Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 登录后未经授权的Passport JWT_Javascript_Node.js_Jwt - Fatal编程技术网

Javascript 登录后未经授权的Passport JWT

Javascript 登录后未经授权的Passport JWT,javascript,node.js,jwt,Javascript,Node.js,Jwt,我的带有passport JWT的应用程序不想正常工作,因为登录后我只能看到它 未经授权 登录算法本身工作良好,因为它检查用户凭据等。但是passport应该使用JWTStrategy的部分根本不起作用。我在这里遇到了许多问题和答案,希望找到答案,但我看不到任何有用的东西。我提出的整个概念都是使用了一些细微的细节,但这些细节是不断变化的 fromAuthHeaderAsBearerToken => fromAuthHeaderWithScheme('jwt') 但它仍然不起作用。登录后,

我的带有passport JWT的应用程序不想正常工作,因为登录后我只能看到它

未经授权

登录算法本身工作良好,因为它检查用户凭据等。但是passport应该使用
JWTStrategy
的部分根本不起作用。我在这里遇到了许多问题和答案,希望找到答案,但我看不到任何有用的东西。我提出的整个概念都是使用了一些细微的细节,但这些细节是不断变化的

fromAuthHeaderAsBearerToken => fromAuthHeaderWithScheme('jwt')
但它仍然不起作用。登录后,我在浏览器上看不到任何新的cookies设置或其他内容。问题出在哪里?最主要的是,我甚至无法到达并打印
console.trace(jwtPayload)在my Passport.js上:

const passport=require('passport');
const LocalStrategy=require('passport-local')。策略;
const passport jwt=要求(“passport jwt”);
const ExtractJwt=passportJWT.ExtractJwt;
const JWTStrategy=passportJWT.Strategy;
const models=require('../models/index');
passport.use(新本地策略)({
usernameField:'名称',
passwordField:'密码'
},(用户、密码、cb)=>{
返回models.User.findOne({
属性:['id','user\u password','user\u name'],
其中:{user_name:user}
})。然后(用户=>{
如果(!User)返回cb(null,false,{消息:“此类用户没有匹配结果”。});
返回User.validPassword(密码)。然后(结果=>{
if(result!==true)返回cb(null,false,{消息:'所选用户的密码无效'});
返回cb(null,User.get({plain:true}){
消息:“已成功登录”
});
})
}).catch(错误=>{
返回cb(错误);
});
}));
让选项={};
options.jwtFromRequest=ExtractJwt.fromAuthHeaderWithScheme('jwt');
options.secretrokey='token';
options.expiresIn=(86400*30);
console.log(选项);
passport.use(新JWTStrategy(选项、功能)(jwtPayload、cb){
控制台跟踪(jwtPayload);
返回models.User.findOneById(jwtPayload.id)。然后(User=>{
console.log(用户);
如果(用户){
返回cb(null,User.get({plain:true}));
}否则{
返回cb(null,false);
}
}).catch(错误=>{
返回cb(错误);
});

}));我看到您正在使用fromAuthHeaderWithScheme检查令牌。根据自述

创建一个新的提取器,该提取器在授权标头中查找JWT,期望方案与auth_方案匹配

这意味着当您在使用
/login
登录时获得令牌时,您需要将其提供给请求授权标头中的
/dashboard
。您的请求是否在头中包含jwt令牌