2016-01-20 141 views
1

你好我有一个问题,防止用户通过输入网址来访问我的网站。我有一个登录,我想成为访问我的/factory/homepage.html页面的唯一方法。 但是,如果用户在URL字段中键入/factory/homepage.html,则可以访问homepage.html。 我已经在使用app.get('/factory/'),但我的res.redirect('/website/userLogin.html')未重定向到登录页面。 这里是我的代码:如何防止用户直接在node.js中访问网页?

app.get('/factory/*', function(req,res,next){ 
    console.log("going through app.get..."); 
    res.redirect('../website/userLogin.html'); 
    console.log('after redirect...'); 
}); 

输出是:

going through app.get... 
after redirect... 

而且,用户被引导到factory/homepage.html。我也试过app.use('/factory/*'),但没有运气。如果输入了不中我厂目录中的路径,例如/factory/hello.html会重定向到/website/userLogin.html

我会喜欢的目录/factory到无法通过在输入网址访问的转向才有效。然后,我将实施一个中间件功能来检查用户是否通过身份验证。

任何帮助将不胜感激!

+0

希望我不会误解你..但我认为解决方案是一个简单的身份验证问题。你可以设置一个app.get(index)并检查请求是否通过了认证,如果没有,重定向到其他页面? – fzxt

+0

如果你正在检查他们是否登录,为什么他们访问其他页面之前的登录页面有什么关系?为什么认证不够? – Quentin

+0

可能相关:[CSRF](https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)) – Quentin

回答

0

我会尝试这样的事情。

app.get('/factory/*', function(req,res,next){ 

    var authenticated = false; 

    //do something to authenticate user 

    if(authenticated === true){ 
     //user is already authenticated 
     res.redirect('/factory/homepage.html'); 
    }else{ 
     //redirect to login 
     res.redirect('../website/userLogin.html'); 
    } 
}); 
+0

我尝试了您的建议,并且仍然直接进入了/factory/homepage.html页面。由于authenticated等于false,所以执行else代码,但res.redirect不执行。 – HFernando

+0

如果用户已通过身份验证,请将'//执行一些操作来验证用户身份,以将'authenticated'更改为'true'。 – Will