express.js 中用户类型的不同视图/路由

har*_*til 0 node.js express handlebars.js

我们可以有一个快速的应用程序,根据用户类型2 种不同的视图/路线吗?

示例: 我有 2 个用户类型 admin 和普通用户,基于用户更改登录,我如何将每个用户重定向到不同的视图/路由

就像登录后管理员用户进入管理仪表板而普通用户进入个人资料页面一样,还要记住一种类型的用户无法评估其他类型的用户的路线。

任何输入都会有帮助

谢谢

Art*_*kii 5

以最简单的方式,您可以根据用户的类型更改视图,如下所示:

function homeMiddleware (req, res, next) { 
    var view = user.admin ? 'admin' : 'profile';
    res.render(view);
}

app.get('/home', homeMiddleware);
Run Code Online (Sandbox Code Playgroud)

但是,如果您想要单独的路线代码,那么您应该遵循具有以下重构的策略模式

// Define your routes for each user types
var UserRouteStrategy = {
    home: require('./routes/user/profile')
};

var AdminRouteStrategy = {
    home: require('./routes/admin/dashboard')
};

// Early as possible assign current strategy based on user type
function (req, res, next) {
   req.routeStrategy = req.user.admin ? AdminRouteStrategy : UserRouteStrategy 
   next(); // don't forget this
}

// And handle your routes with current strategy
app.get('/home', function (req, res, next) {
   req.routeStrategy.home(req, res, next);
});
Run Code Online (Sandbox Code Playgroud)

通过上述方法,您可以通过在一个地方添加新的用户类型和控制访问来扩展您的应用程序。