我有一个Node.js Express应用程序,它会在允许您进入主页之前检查身份验证。由于原因,我无法弄清楚它加载我的CSS,但重定向后不是我的JavaScript。 这是我的app.js文件中的相关代码:
app.get('/',journal.logInCheck,journal.index);
app.get('/logon',journal.logon);
app.post('/authenticate',journal.authenticate);
这是我的journal.js文件,带有伪代码:
/***************************************
Logon Form and Authentication Routes
****************************************/
/** Check for Authentication **/
exports.logInCheck = function(req,res,next){
console.log('login check');
if(req.session.auth == true){
console.log('login check = true');
next();
}else{
console.log('login check = false');
res.redirect('/logon');
}
}
/** Logon Form **/
exports.logon = function(req,res){
res.render('logon',{layout:'logonlayout',title:'Logon'});
}
/** Authenticates data after it's been submitted by form above **/
exports.authenticate = function(req,res,next){
console.log('authenticating');
if(req.body.username=="at" && req.body.password=="wm"){
req.session.auth = true;
console.log('logon success');
res.redirect('/');
}else{
req.session.auth = false;
console.log('logon fail');
res.redirect('/logon');
}
}
发生的事情是,一旦我正确验证,程序重定向,我的节点控制台只显示请求的两个css文件,但不显示五个或六个javascript文件。
另外我注意到网址没有被完全重写。当它应显示http://domain.com:3000/#home
时,它会显示htt://domain.com:3000 / logon #home这里要求的是layout.jade。这是加载任何javascript的唯一文件,并且对所有页面都是通用的。仅供参考,如果我从网址中删除登录#home,页面确实加载完全正常。
!!!
html
head
title= title
link(rel='stylesheet', href='/jqtouch-1.0-b4-rc/themes/css/jqtouch.css', type='text/css', media='screen')
link(rel='stylesheet', href='/stylesheets/style.css', type='text/css', media='screen')
script(src="/jqtouch-1.0-b4-rc/src/lib/zepto.js", charset="utf-8")
script(src="/jqtouch-1.0-b4-rc/src/jqtouch.js", charset="utf-8")
script(src="/javascripts/ajax.js")
script(src="/javascripts/moderniz.js")
script(src="/javascripts/sjcl.js")
script
var jQT = new $.jQTouch({
icon: 'jqtouch.png',
addGlossToIcon: true,
startupScreen: 'jqt_startup.png',
statusBar: 'black'
});
body
block content
这是journal.index
exports.index = function(req, res){
res.render('journal', { title: 'Journal App' });
};
更新:我设置了一个测试应用程序,仅用于隔离问题。当我的jade模板中存在以下JQTouch代码时,Express重定向无法正常工作。
script
var jQT = new $.jQTouch({
icon: 'jqtouch.png',
addGlossToIcon: true,
startupScreen: 'jqt_startup.png',
statusBar: 'black'
});