首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeBB (Redis)检索用户名和密码

NodeBB (Redis)检索用户名和密码
EN

Stack Overflow用户
提问于 2015-03-30 15:03:39
回答 1查看 519关注 0票数 0

我想在我的Redis服务器上查询与用户名匹配的密码。我该怎么做呢?我几乎没有使用Redis和Node的经验,所以我找不到存储这样的密钥。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2015-03-30 15:57:16

查看文件/src/routes/authentication.js。您可以使用Auth.login函数获取用户名和密码作为参数。然后在user对象上有回调函数,该函数首先被调用,并从名为'userslug:uid‘的redis散列返回给您回调(_uid) (参见/src/user.js文件db.getObjectField('userslug:uid',userslug,userID );函数)。下一步是通过用户ID从redis中获取user‘:’+ uid散列。这是使用authenticate.js文件中的db.getObjectFields('user:‘+ uid,'password','banned',next);函数完成的。

以下是Auth.login函数:

代码语言:javascript
复制
Auth.login = function(req, username, password, next) {
    if (!username || !password) {
        return next(new Error('[[error:invalid-password]]'));
    }

    var userslug = utils.slugify(username);
    var uid;

    async.waterfall([
        function(next) {
            user.getUidByUserslug(userslug, next);
        },
        function(_uid, next) {
            if (!_uid) {
                return next(new Error('[[error:no-user]]'));
            }
            uid = _uid;
            user.auth.logAttempt(uid, req.ip, next);
        },
        function(next) {
            db.getObjectFields('user:' + uid, ['password', 'banned'], next);
        },
        function(userData, next) {
            if (!userData || !userData.password) {
                return next(new Error('[[error:invalid-user-data]]'));
            }
            if (userData.banned && parseInt(userData.banned, 10) === 1) {
                return next(new Error('[[error:user-banned]]'));
            }
            Password.compare(password, userData.password, next);
        },
        function(passwordMatch, next) {
            if (!passwordMatch) {
                return next(new Error('[[error:invalid-password]]'));
            }
            user.auth.clearLoginAttempts(uid);
            next(null, {uid: uid}, '[[success:authentication-successful]]');
        }
    ], next);
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29340174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档