请教:ExpressJS中如何禁止让用户直接访问html页面呢?
发布于 12 年前 作者 italkboy 10039 次浏览 最后一次编辑是 8 年前

这样使用,阻止用户直接进入登录后的页面:

app.get('/main.html', function(request, response){
	response.render('login',{info:'输入账户密码以登录'});
});

但是由于:

app.use(express.static(__dirname + '/public'));

而不能阻止用户访问main.html

请教一下有没有办法呢?谢啦~。

11 回复

你在static前面加上用户登录逻辑判断就可以了

嗯 谢啦 能给个小例子不呢?

我想了解一下,为什么要用express?它有什么优势?谢谢~

@italkboy 就是在use时把app.router放到express.static前面,app.router先做逻辑验证。

就像你做J2EE, 你可以直接jsp, 也可以用Struts

@luinlee 哦,那反过来说是不是,use时把express.static放在app.router前面,就不能组织用户访问页面了? 因为默认使用命令express xxx 生成的app.js是router在static前,那假如router放static后,又有什么优劣呢?

"Note the use of app.router, which can (optionally) be used to mount the application routes, otherwise the first call to app.get(), app.post(), etc will mount the routes."

1.express 中对router的这句描述应该怎么理解呢?

意思是说可以手动去调用use app.router来挂载应用的路由,或者如果不手动调用,则express会在第一次getpost请求中挂载吗?

2.是不是正是这个手动调用router并配置调用位置的处理,来实现next功能,进一步实现请求过滤器等?因为connect源码中static模块的send方法有

    // replace next() with callback when available
    if (fn) next = fn;

是这样理解吗?, 我小白,对于express的router模块挺迷惑……

@atian25 问题是在WEB2.0下,MVC会变成MC~呵呵

@leolovenodejs node本身没有提供什么session之类的支持,只有一个http. Express就是一个项目骨架,帮你实现一些常用的东西而已,同样的类库也有Geddy等

搞一个connect middleware 判断用户是否登陆了,如果没有就重定向到登陆页面. 看起来不难的.

回到顶部