2014-12-26 17 views
1

我使用passportjs我expressjs应用:deserializeUser既为用户和管理员联系

我有建于同一个项目都管理员和用户功能。

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

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

//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')); 
      }); 
    }); 

如何创建另一个连载&反序列化的管理?

回答

2

使用passport.js,您应该只定义一个serializeUserdeserializeUser函数 - 对于每种类型的用户都不需要单独的函数。

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

在一个稍微不相关的说明中,如果您正在寻找更简单的方法来进行身份验证,您可能需要查看express-stormpath - 我是它的作者,所以我很偏颇,但它提供了一种更简单的用户集成形式以及权限/组。