快速网关 jwt 返回未授权



我正在快速网关上尝试jwt。但是从配置网关.config.yml来看,它符合文档。但是,这总是不自动返回。 My 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

如果直通设置为 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);
}
}));

最新更新