我想在我的Redis服务器上查询与用户名匹配的密码。我该怎么做呢?我几乎没有使用Redis和Node的经验,所以我找不到存储这样的密钥。
任何帮助都是非常感谢的!
发布于 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函数:
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);
};https://stackoverflow.com/questions/29340174
复制相似问题