Javascript 服务器上的路由会扰乱客户端的路由吗?

Javascript 服务器上的路由会扰乱客户端的路由吗?,javascript,node.js,backbone.js,express,Javascript,Node.js,Backbone.js,Express,使用passport.js,在用户登录之前,我不需要任何客户端javascript 在我的服务器端,我有一个路由器来处理一些登录逻辑。因此,当用户成功登录时,我将用户路由到/profile路由 这种情况让我感到困惑,因为express正在处理总体框架。/profile路由呈现我的配置文件模板res.render('profile',{user:req.user})并很好地将用户的服务器模型传递到模板中,很酷 但是,如果我的应用程序现在位于我的目录中不存在的路径上,并且我在这里定义了我的目录,那么

使用passport.js,在用户登录之前,我不需要任何客户端javascript

在我的服务器端,我有一个路由器来处理一些登录逻辑。因此,当用户成功登录时,我将用户路由到
/profile
路由

这种情况让我感到困惑,因为express正在处理总体框架。
/profile
路由呈现我的配置文件模板
res.render('profile',{user:req.user})
并很好地将用户的服务器模型传递到模板中,很酷

但是,如果我的应用程序现在位于我的目录中不存在的路径上,并且我在这里定义了我的目录,那么这就是我的原因。使用('/',express.static(path.join(u dirname,'public'))这会导致糟糕的体系结构

因为有时候我的js css上会出现404个错误。我必须在我的客户端主干路由器上像这样路由
/routes#chat

我的问题

那么,在用户成功后,将重定向回
localhost:3000
,现在销毁登录视图并呈现用户配置文件视图,这是一个好主意吗?有人能给我一点启示吗?我有一个大致的想法,但不太确定当我认为服务器端需要与客户端通信时,该怎么做,或者可能不需要

如果以上是一个坏主意,有人能给我建议如何更好地看待这个问题吗

编辑:路线

app.get('/', function(req, res) {
    res.render('index'); 
});

app.get('/login', function(req, res) {
    res.render('login', { message: req.flash('loginMessage') }); 
});

app.get('/profile', isLoggedIn, function(req, res) {
    res.render('profile', { user : req.user });
    res.redirect('/');
    io.sockets.on('connection', function (socket) {
        socket.userName = req.user.local.email;
        users[socket.userName] = socket;
        console.log(Object.keys(users))
    });
});

使用session来记住登录名,或者使用一些自定义函数来查询登录名的状态

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

    if (req.session.isLogin) {
        res.render('profile', { user : req.user });
        // put other code here
    }
    else
        res.redirect('/login'); 
});

app.get('/login', function(req, res) {
    res.render('login', { message: req.flash('loginMessage') }); 
});

基本
/
服务器路由首先检查
isLogin
,如果为真呈现
profile
,则为假呈现/直接到
/login
。登录后重定向到
/
是的,我尝试了,所以我得到了用户保存在会话中的信息。但是当重定向到
/
时,如何将用户属性传递给模板。如果我重定向到
/
,它将使用我的index.handlebar,它包含两个按钮,登录或注册。我的意思是你的index.handlebar需要是个人资料页面。你现在的索引变成login.handlerbar.Oh是有道理的,我不是这么想的。谢谢,让我试着改变一下。好吧,我在一定程度上理解你的意思。我的问题是,如果我设置了默认路由,每当我返回到该路由时,它都会运行初始路由。因此,通过路由返回到
/
,它可以运行任何设置。哦,太好了,我对路由和所有这些东西都是新手。我很欣赏这个例子。很高兴你回答了我的问题,我的路由中间件看起来像是
函数isLoggedIn(req,res,next){if(req.isAuthenticated())return next();res.redirect('/');}
但是
req.session.isLoggedIn
似乎返回未定义?因此,由于我使用的是passport.js,似乎我需要使用
req.user
它工作,不确定它是否安全??但是
if(req.user)
if(req.session.isLogin)
好的解决方案吗。感谢您的洞察力…您是否使用passport.js进行身份验证?或者我在其他问题上弄错了。