【问题标题】:Redirect to different pages based on role using passport-local-roles使用护照本地角色根据角色重定向到不同的页面
【发布时间】:2018-04-26 02:32:28
【问题描述】:

我需要使用passport-local-role 节点模块实现基于角色重定向到不同页面的功能。

例如:

'管理员' => http://domainname/admin

'用户' => http://domainname/profile

【问题讨论】:

    标签: node.js express passport.js passport-local


    【解决方案1】:

    我建议您在客户端为每个角色创建单独的目录。在服务器端,将用户角色存储在会话中。然后创建一个这样的函数

    function getRoot(request, response) {
        if (request.user && request.user.roleName === 'visitor') {
            response.sendFile(path.join(__dirname, '../', 'client/visitor/visitor.html'));
        }
        else if (request.user && request.user.roleName === 'user') {
            response.sendFile(path.join(__dirname, '../', 'client/user/user.html'));
        }
        else if (request.user && request.user.roleName === 'admin') {
            response.sendFile(path.join(__dirname, '../', 'client/admin/admin.html'));
        }
        else {
            response.sendFile(path.join(__dirname, '../', 'client/visitor/visitor.html'));
        }
    }
    

    使用passport 包:

    passport.use(new LocalStrategy(function (username, password, done) {
        if ((!username && !password) || !username || !password) {
            return done(null, false, {
                message: invalidUsernameOrPassword
            });
        } else {
            visitor.login(username, password)
                .then(function (result) {
                    return done(null, result);
                })
                .catch(function (error) {
                    return done(null, false, error);
                });
        }
    }));
    
    passport.serializeUser(function (user, done) {
        done(null, user);
    });
    
    passport.deserializeUser(function (user, done) {
        done(null, user);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      相关资源
      最近更新 更多