Javascript 服务器上的路由会扰乱客户端的路由吗?
使用passport.js,在用户登录之前,我不需要任何客户端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})并很好地将用户的服务器模型传递到模板中,很酷 但是,如果我的应用程序现在位于我的目录中不存在的路径上,并且我在这里定义了我的目录,那么
/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进行身份验证?或者我在其他问题上弄错了。