使用passport-local-roles基于角色重定向到不同的页面

时间:2018-04-25 18:02:18

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

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

例如:

  

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

     

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

1 个答案:

答案 0 :(得分:0)

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

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