反序列化用户和pipe理员用户

我为我的expressjs应用程序使用passportjs:

我在同一个项目中build立了pipe理员和用户function。

我已经成功地为用户执行身份validation,现在我正在尝试pipe理员。

我坚持如何在会话序列化和反序列化:

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

如何为pipe理员创build另一个序列化和反序列化?

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

相反,你应该build模你的用户模型,以便在某个地方有一个权限标志,比如User.is_admin或者其他东西 – 这就是你应该如何区分用户types。 如果你这样做,你可以继续使用相同的序列化的东西护照。

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