【发布时间】:2014-05-04 03:55:51
【问题描述】:
使用 passport.js 在用户登录之前我不需要任何客户端 javascript。
在我的服务器端,我有一个处理一些登录逻辑的路由器。所以当用户成功登录后,我将用户路由到/profile路由。
这让我很困惑,因为 express 正在处理整个框架。 /profile 路由渲染了我的配置文件模板res.render('profile', { user : req.user }); 并很好地将用户的服务器模型传递到模板中,很酷的东西!
但这就是让我着迷的原因,如果我的应用程序现在位于 /profile 上,我的目录中不存在一个路径,而我在这里定义了我的目录 app.use('/', express.static(path.join(__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))
});
});
【问题讨论】:
-
基础
/服务器路由先检查isLogin,如果真渲染profile,假渲染/直接到/login。登录后重定向到/ -
是的,我试过了,所以我让用户保存在会话中。但是当重定向到
/时,我如何将用户属性传递给模板。如果我重定向到/,它将使用包含两个按钮的 index.handlebars,登录或注册。 -
我的意思是你的 index.handlerbar 需要是个人资料页面。你当前的索引变成 login.handlerbar。
-
哦,有道理我没有那样想。谢谢,让我试着改变一下。
-
好的,我明白你在说什么。我的问题是,如果我设置了默认路由,那么每当我返回该路由时,它都会运行初始路由。因此,通过路由回
/,它会运行任何设置。
标签: javascript node.js backbone.js express