用户和管理员的deserializeUser

时间:2014-12-26 15:29:33

标签: node.js express passport.js

我正在使用passportjs来表达我的快递申请:

我在同一个项目中构建了管理员和用户功能。

我已成功为用户实施身份验证,现在我正在尝试管理员。

我被困在会话序列化&反序列化:

    //use to serialize the user for the session
    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });

    //use to deserialize the user
    passport.deserializeUser(function(id, done) {
       models.User.find(id)
           .success(function(user){
              done(null, user);
           }).error(function(err){
               done(new Error('User ' + id + ' does not exists'));
           });
    });

如何创建另一个序列化&为管理员反序列化?

1 个答案:

答案 0 :(得分:2)

使用passport.js,您只能定义一个serializeUserdeserializeUser函数 - 不需要为每种类型的用户分别使用。

相反,您应该建模您的用户模型,以便在某处有一个权限标记,例如User.is_admin或其他东西 - 这就是您应该如何区分用户类型。如果你这样做,你可以继续使用相同的序列化的东西护照。

稍微不相关的说明,如果你正在寻找一种更简单的方法来做auth的东西,你可能想看看express-stormpath - 我是它的作者,所以我很偏颇,但它提供了一种更简单的用户集成形式以及权限/组。