跳到主要内容
CNode

请教:ExpressJS中如何禁止让用户直接访问html页面呢?

社区
Iitalkboy发布于 15 年前最后回复 14 年前
11117500

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

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

但是由于:

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

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

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

查看回复

回复 (11)

J
jackeychen#1114 年前

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

A
atian25#914 年前
引用 leolovenodejs我想了解一下,为什么要用express?它有什么优势?谢谢

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

L
leolovenodejs#814 年前
引用 leolovenodejs我想了解一下,为什么要用express?它有什么优势?谢谢

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

S
stupigme#714 年前
"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模块挺迷惑……

S
stupigme#614 年前
引用 fengmk2你在static前面加上用户登录逻辑判断就可以了

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

A
atian25#514 年前
引用 leolovenodejs我想了解一下,为什么要用express?它有什么优势?谢谢

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

L
luinlee#414 年前
引用 fengmk2你在static前面加上用户登录逻辑判断就可以了

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

L
leolovenodejs#314 年前

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

I
italkboy#215 年前
F
fengmk2#115 年前

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

参与回复

登录后即可参与回复。登录