为Passportjs进行身份验证准备复杂的用户名,租户和密码

时间:2014-08-22 05:19:09

标签: multi-tenant passport.js

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会:

  1. 解析JSON有效负载,抓取customUserData
  2. customerData作为函数(usernameObject
  3. 中的第一个参数传递
  4. 允许我获得租户和电子邮件以进行进一步处理
  5. 但这似乎并没有发生。在我尝试调试代码的其他部分之前,我需要知道这种方法在理论上是否有效。

    否则,您将如何配置并将用户名+租期传递给Passport?

0 个答案:

没有答案