如何将一个hapi auth插件变成可选的
我想使用hapi jwt token auth插件https://github.com/ryanfitz/hapi-auth-jwt,但是使用可选的身份validation创build路由。 我怎样才能阻止路由返回401,而是继续执行一个空的request.auth.credentials。
我想要使用它的所有其他路由保持相同的实现返回401未经身份validation的请求。
server.register(require('hapi-auth-jwt'), function (error) { server.auth.strategy('token', 'jwt', { key: privateKey, validateFunc: validate }); //make this one allow anonymous while also reading logged in credentials server.route({ method: 'GET', path: '/', config: { auth: 'token' } }); server.route({ method: 'GET', path: '/mystuff', config: { auth: 'token' } }); }); server.start();
您可以在路由configuration中将其设置为可选:
server.route({ method: 'GET', path: '/', config: { auth: { strategy: 'token', mode: 'optional' } } });
模式可以是true
, false
, required
, optional
或者try
。 有关更多详细信息,请参阅authentication教程
除了optional
路由的身份validationconfiguration之外,还可以使用try
。
server.route({ method: 'GET', path: '/', config: { auth: { strategy: 'token', mode: 'try' } } })
这两者之间的区别
-
optional
:不需要authentication凭证,但是如果提供,则需要有效 -
try
:如果用户提供了无效的身份validation凭据,他们仍然会被接受,用户将前往路由处理程序
- 要求Passport.js / Node.js目录(除了一个页面)的身份validation?
- 我们如何在node.js中使用Firebase Auth创build用户?
- InternalOAuthError:无法获取访问令牌
- firebase是否为每个admin.auth()。verifyIdToken(idToken)发出networking请求?
- 如何保护TCP连接 – nodejs?
- 我的AJAX代码(将Firebase令牌发送到服务器)有什么问题?
- 使用JSON Web令牌和node.js / express保护URL的正确方法
- 具有Express和Mongoose的BasicAuth
- 具有模块请求的node.js中的代理authentication