keystone的signin怎么验证用户名和密码的?
内容如题,没见到取用户信息啊?图见下: signin.js
csrf.js
8 回复
User.model.findOne({email: params.email})
.exec(function (err, userTmp) {
var error = new Error('it failed');
if (err) {
error.statusCode = 500;
error.output = {message: "数据库出错", more: err};
return callback(error);
}
if (!userTmp) {
error.statusCode = 404;
error.output = {message: "用户不存在", more: params.email};
return callback(error);
}
userTmp._.password.compare(params.password, function (err, isMatch) {
if (err) {
log(err);
}
if (!isMatch) {
error.statusCode = 400;
error.output = {message: "密码错误", more: ''};
return callback(error);
}
if (!userTmp.isAdmin) {
error.statusCode = 400;
error.output = {message: "没有权限", more: ''};
return callback(error);
}
req.session.userId = userTmp._id;
return callback(null, db.users4App(userTmp)[0]);
});
});
这样就行了
userTmp._.password.compare 重点是这个
@LeafInStrom 谢谢你。
@LeafInStrom 这是你自己写的还是keystone本身就有的啊?
@Chalin-Shi 自己写的 核心也是用的keystone的机制
@LeafInStrom 哥们,你好。问一下keystone数据模型里某个字段数据类型可以为数组吗?他的Types没有。
@Chalin-Shi Types.NumberArray Types.StringArray 但是目前没有对象数组,只能自己调用mongoose的scheme来添加,0.4版本的会添加ObjectArray,其实已经写好了,但是因为0.4还处于开发状态没有merge而已,