有关express-jwt模块的信息可以在这里找到:
-
https://github.com/auth0/express-jwt https://github.com/auth0/express-jwt
- https://www.npmjs.com/package/express-jwt https://www.npmjs.com/package/express-jwt
In my main.js
服务器文件,我有以下内容:
import ExpressJwt from 'express-jwt';
// import other crap...
let token = ExpressJwt({
secret: 'whatever',
audience: 'whatever',
issuer: 'whatever'
});
app.all('/apiv1', token.unless({ path: ['apiv1/user/create', '/apiv1/auth/login']}));
app.use('/apiv1/user', user);
app.use('/apiv1/auth', auth);
Where user
and auth
是处理我的路线的中间件。我想要做什么是显而易见的;拒绝所有未经身份验证的用户访问 API,除非他们尝试通过以下方式创建新用户apiv1/user/create
和/或通过以下方式登录apiv1/auth/login
.
然而,每当我尝试向上述不受保护的路径发出请求时,我都会收到错误:
UnauthorizedError:未找到授权令牌
它仍然保护我指定不受保护的路由!我也尝试过:
app.use('/apiv1/user', token.unless({ path: ['/apiv1/user/create'] }), user);
app.use('/apiv1/auth', token.unless({ path: ['/apiv1/auth/login'] }), auth);
但这没有用。我还尝试使用正则表达式作为 except 路径,但这也不起作用。
我到达app.all('/apiv1', token...)
via 这个答案 https://stackoverflow.com/questions/28997519/express-jwt-handling-specific-secret-passphrase-by-routes,但该解决方案没有给我带来所需的功能。