Express gateway jwt return 未经授权
Express gateway jwt return Unauthorized
我正在 express-gateway 上尝试 jwt。但是从配置 gateway.config.yml 来看是符合文档的。但是,那总是 return 未授权。
我的 gateway.config.yml:
http:
port: 8080
apiEndpoints:
crudAPI:
host: localhost
paths:
- '/users/get-user-data'
- '/users/delete-user-data'
- '/users/add-user-data'
- '/users/get-one-user-data/*'
- '/users/update-user-data'
- '/users/update-pass-user-data'
serviceEndpoints:
crudService:
url: 'http://localhost:3004'
policies:
- proxy
- log
- jwt
pipelines:
crud:
apiEndpoints:
- crudAPI
policies:
- log:
- action:
message: "header===> ${req.headers.authorization}"
- jwt:
- action:
secretOrPublicKey: 'secretAuth'
checkCredentialExistence: false
# passThrough: true
- proxy:
- action:
serviceEndpoint: crudService
如果 passThrough 设置为 true 则它可以正常工作。
出了些问题?
这在 EG 中效果很好。只有我在后端 API 上的 JWT 出错了。感谢您抽出时间调查此案。非常感谢与EG的合作
验证 JWT 时我的后端 API:
// JSON WEB TOKEN STRATEGY
passport.use(new JwtStrategy({
// jwtFromRequest: ExtractJwt.fromHeader('authorization'), // WRONG
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), // CORRECT
secretOrKey: config.JWT_SECRET
}, async (payload, done) => {
try {
// find user specified in token
const user = await User.findById(payload.sub);
// handle if user doesnt exist
if(!user) {
return done(null, false);
}
// return the user
done(null, user);
} catch (error) {
done(error, false);
}
}));
我正在 express-gateway 上尝试 jwt。但是从配置 gateway.config.yml 来看是符合文档的。但是,那总是 return 未授权。 我的 gateway.config.yml:
http:
port: 8080
apiEndpoints:
crudAPI:
host: localhost
paths:
- '/users/get-user-data'
- '/users/delete-user-data'
- '/users/add-user-data'
- '/users/get-one-user-data/*'
- '/users/update-user-data'
- '/users/update-pass-user-data'
serviceEndpoints:
crudService:
url: 'http://localhost:3004'
policies:
- proxy
- log
- jwt
pipelines:
crud:
apiEndpoints:
- crudAPI
policies:
- log:
- action:
message: "header===> ${req.headers.authorization}"
- jwt:
- action:
secretOrPublicKey: 'secretAuth'
checkCredentialExistence: false
# passThrough: true
- proxy:
- action:
serviceEndpoint: crudService
如果 passThrough 设置为 true 则它可以正常工作。 出了些问题?
这在 EG 中效果很好。只有我在后端 API 上的 JWT 出错了。感谢您抽出时间调查此案。非常感谢与EG的合作
验证 JWT 时我的后端 API:
// JSON WEB TOKEN STRATEGY
passport.use(new JwtStrategy({
// jwtFromRequest: ExtractJwt.fromHeader('authorization'), // WRONG
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), // CORRECT
secretOrKey: config.JWT_SECRET
}, async (payload, done) => {
try {
// find user specified in token
const user = await User.findById(payload.sub);
// handle if user doesnt exist
if(!user) {
return done(null, false);
}
// return the user
done(null, user);
} catch (error) {
done(error, false);
}
}));