而不是检查每个控制器,我想用它app.all('*')
来检查用户是否经过身份验证并且它已经很好地工作了。如果用户已登录,我只是在打电话next()
,如果他没有,我正在调用另一条路线来显示登录页面。
到目前为止一切都很好,但似乎从该中间件回调函数进行渲染会以某种方式弄乱我的路径,例如样式表不起作用,当我在页面源中单击它时,我再次登陆索引页面。
总而言之,这有效并显示了我的风格:
app.get('/', function (req, res) {
res.render('index', { title: 'Account Page' });
});
虽然这确实部分工作,但它只显示没有样式表中的样式的 HTML:
app.all('*', function (req, res) {
app.set('loggedIn', controller.security.authenticationAction(req));
if (app.get('loggedIn')) next(); // go on with '/' route
else res.render('index', { title: 'Index Page' });
});
这也显示了相同的 HTML 页面(虽然有另一个标题),但没有样式。这是我在 app.js 中的默认配置:
app.all('*', function (req, res) { ... });
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.cookieParser('keykeykey'));
帮助!