【问题标题】:how to turn a hapi auth plugin to be optional如何将 hapi auth 插件变为可选
【发布时间】:2015-03-30 02:25:59
【问题描述】:

我想使用 hapi jwt 令牌身份验证插件 https://github.com/ryanfitz/hapi-auth-jwt,但使用可选身份验证创建路由。如何防止路由返回 401,而是继续使用 null request.auth.credentials 执行。

我希望所有其他使用它的路由保持在未经身份验证的请求上返回 401 的相同实现。

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();

【问题讨论】:

    标签: node.js authentication hapijs


    【解决方案1】:

    您可以在路由配置中将其设置为可选:

    server.route({
        method: 'GET',
        path: '/',
        config: {
            auth: {
                strategy: 'token',
                mode: 'optional'
            }    
        }
    });
    

    模式可以是truefalserequiredoptionaltry。有关详细信息,请参阅authentication tutorial

    【讨论】:

      【解决方案2】:

      除了optional路由的auth配置,还可以使用try

      server.route({
        method: 'GET',
        path: '/',
        config: {
          auth: {
            strategy: 'token',
            mode: 'try'
          }    
        }
      })
      

      两者的区别

      • optional:不需要身份验证凭据,但如果提供,它们必须是有效的
      • try:如果用户提供了无效的身份验证凭据,他们仍然会被接受,用户将继续使用路由处理程序

      【讨论】:

        猜你喜欢
        • 2019-06-07
        • 1970-01-01
        • 2015-10-17
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多