我现在登录后,用户信息保存在session里, 然后每个页面都要显示用户名,这块区域是在页面最上方的, 我要怎么做合理呢,还是每个页面都从session里往前端传
@tofrookie 服务端往客户端传数据,这一步是省略不掉的,你用模版(比如ejs)显示title也还是要配置参数的:res.render({title: 'some title'})
这个插件可以帮助节省一些重复劳动: https://github.com/dwightjack/grunt-ejs-render
写一个 dynamicHelper。
如果你用 express 的话,就写一个全局中间件,每次有访问都将 res.locals.current_user
赋值为 req.session.user
,这样就可以在 view 中直接使用 current_user
了。
@alsotang 这里还有个问题,写了一个userLoged函数:
exports.userLoged = function (req, res, user) {
res.locals.user = req.session.user = user
}
之后在view层如果直接这样要报错的
<h1><%- res.locals.user %></h1>
在 res.render
中传参这一步还是省略不掉吧
@alsotang next
这个函数我理解是如果你访问 /user/edit
,如果这个请求的handler直接调用 next()
,请求会被指到 /user
(如果有的话)来操作。
这里是用户登录后把用户保存到locals,登录的操作发生在 post: /login
,为什么要使用next呢?
@alsotang
我造了,app.get('/follow', user.required, user.follow)
这里,在user.required调用 next() 的话就会到user.follow
( ´ ▽ ` )
@alsotang 我作死把route这里重写了,在contoller里根据文件名分流,破坏了原来的中间件机制(具体可见:https://github.com/klamtlne/Nodelog/blob/master/controllers/index.js ) ,我得想想怎么把中间件加进去…