将 Passportjs 与 Sails 一起用于JSON正文的用户身份验证(无查询/表单参数)。
userObject
比{ "username": username, "password": password }
复杂一点。它是一棵树,除其他数据外,还包含一个租赁密钥,用于多租户系统。
{
"userObj" : {
"tenant" : id,
"email" : email,
"password" : password
}
由于Passport只接受两个参数,即用户名和密码,我试过"作弊" on自定义中间件上的Passport配置:
passport.use(new LocalStrategy(
{
usernameField: 'customUserData',
passwordField: 'password'
},
function(usernameObject, password, done) {
var actualUser = usernameObject.email;
var tenant = usernameObject.tenant;
....
}
)
);
在实际身份验证调用期间,我重新安排了:
req.body
是JSON
req.body.customUserData = {};
req.body.customUserData.email= req.body.userObj.email;
req.body.customUserData.tenant = req.body.userObj.tenant;
req.body.password = req.body.userObj.password;
然后是身份验证调用:
passport.authenticate('local', function(err, user, info){ ... });
我的期望是Passport会:
customUserData
customerData
作为函数(usernameObject
)但这似乎并没有发生。在我尝试调试代码的其他部分之前,我需要知道这种方法在理论上是否有效。
否则,您将如何配置并将用户名+租期传递给Passport?