【问题标题】:deserializeUser for both user and adminstrator用户和管理员的反序列化用户
【发布时间】:2015-02-23 20:55:25
【问题描述】:

我正在为我的 expressjs 应用程序使用 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'));
           });
    });

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

【问题讨论】:

    标签: node.js express passport.js


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2018-12-27
      相关资源
      最近更新 更多