Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果有会话,则加载页面,否则重定向_Javascript_Node.js_Express_Express Session - Fatal编程技术网

Javascript 如果有会话,则加载页面,否则重定向

Javascript 如果有会话,则加载页面,否则重定向,javascript,node.js,express,express-session,Javascript,Node.js,Express,Express Session,因此,基本上,我想做一个非常简单的检查,如果没有登录会话,那么我将用户重定向到signin.html,我可以通过向我的服务器发出一个ajax请求来实现,在该请求中,服务器将响应我,然后在前端执行类似的操作 if(session){ //continue }else{ window.location.href="signup.html" } 然而,我的问题是,在服务器响应所需的1秒钟左右的时间里,由于您不能再使用同步ajax请求,我的HTML一直在后台加载,允许用户在一瞬间看到它

因此,基本上,我想做一个非常简单的检查,如果没有登录会话,那么我将用户重定向到
signin.html
,我可以通过向我的服务器发出一个ajax请求来实现,在该请求中,服务器将响应我,然后在前端执行类似的操作

if(session){
    //continue
}else{
    window.location.href="signup.html"
}

然而,我的问题是,在服务器响应所需的1秒钟左右的时间里,由于您不能再使用同步ajax请求,我的HTML一直在后台加载,允许用户在一瞬间看到它,我尝试做一些事情,就像您尝试在未登录的情况下访问,它会将您重定向到谷歌登录,甚至不加载其
帐户.html
。而且我对node有点陌生。。。因此我的问题是。。。我想我可能需要在服务器端执行此操作,但我不知道如何执行。提前感谢。

如果您使用的是express,则可以使用在会话登录之前不向客户端发送视图

if(session){
    res.render(indexHtml);
}else{
    res.render(signupHtml);
}

您可以将所有HTML放入
if(会话)中{
code block。我认为更正确的方法实际上是让服务器端代码处理您在问题中提到的逻辑。好的,我可以把它放在哪里?比如,我需要把它放在重定向触发后发生的事情中,或者你可以把它放在路由的回调中,比如
应用程序。get(“/”,sessionCallback)
。因此,当浏览器调用index.html时(对路由使用“/”与“/index.html”相同),express服务器将执行会话检查并返回相应的模板。