【问题标题】:hapi basic authentication credential is nullhapi 基本身份验证凭据为空
【发布时间】:2021-03-13 01:52:05
【问题描述】:

我使用了@hapi/basic 插件,并像教程一样编写了验证函数。它工作正常,我可以使用正确的用户名和密码登录,如果我发送的用户名和密码不正确,它也会返回 401 HTTP 错误。问题是,我无法在路由处理程序函数中获取凭据。它始终为空。如果可以,请帮助我。

        const validateUser = async (
            request: IRequest,
            username: string,
            password: string,
            h: Hapi.ResponseToolkit,
        ) => {
            try {
                const user = await database.manHourUserModel.findOne({ userName: username });
                if (!user || !user.active) {
                    return {
                        isValid: false,
                        credentials: null,
                    };
                }
                const isValid = user.validatePassword(password);
                return { isValid, credentials: user };
            } catch (error) {
                return { isValid: false };
            }
        };

我无法在路由处理函数中获取凭据:

    public async login(request: IRequest, h: Hapi.ResponseToolkit) {
        return request.auth.credentials;
    }

【问题讨论】:

    标签: node.js hapijs hapi


    【解决方案1】:

    request.auth 中添加user 对象可能会解决这个问题:

            const validateUser = async (
            request: IRequest,
            username: string,
            password: string,
            h: Hapi.ResponseToolkit,
        ) => {
            try {
                const user = await database.manHourUserModel.findOne({ userName: username });
                if (!user || !user.active) {
                    return {
                        isValid: false // This is enough to throw 401.
                    };
                }
                const isValid = user.validatePassword(password);
                request.auth.credentials = user; // Add manually
                return { isValid };
            } catch (error) {
                return { isValid: false };
            }
        };
    

    注意:我不确定这样做是否正确,因此升级hapi 版本或在findOne() 查询中使用lean() 添加凭据对象也可能会解决此问题。

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2013-03-19
      • 1970-01-01
      • 2017-11-11
      • 2012-08-30
      • 2020-12-03
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多