this.session.user 没有值

来源:7-3 第七天 兼容PC注册登录和首页(下)

大大的喆

2016-12-14

老师  this.sesion.user 设完值之后 ,页面中还是没有值 下面是我测试session的代码:

app.js中:

//测试 koa-session

//这个地方,因为使用koa-views时,'this.render'一直没有效果,所以我改用了co-views 可以正常的render

var views = require('co-views');

var render = views(path.join(__dirname,'/app/views'), {

  default:'jade'

});

app.use(function *(next){

    this.session.user = {"name":"ceshi"};   

    console.log(this.session.user);//这个地方有值:{name:"ceshi"}

    this.body = yield render('test', {});

})

//test.jade

doctype html

html

    head

        meta(charset='utf-8')

        title 点击

    body

        h1 jade ceshi

        if user

            h2 #{user}

        else

            h2 session 没有值


结果页面结果为:

http://szimg.mukewang.com/5850ac2b00016f3a05760201.jpg



再补充一下:

我再测试了一下登录的功能,登录前的cookie值为:

Cookie:koa:sess=eyJ1c2VyIjp7Im5hbWUiOiJjZXNoaSJ9LCJfZXhwaXJlIjoxNDgxNzY1MTM4Mjg3LCJfbWF4QWdlIjo4NjQwMDAwMH0=; koa:sess.sig=mF5mIvxFM-miYrzS7tVddyMWGjE; marking=j0id8v


登录之后,cookie为:

http://szimg.mukewang.com/5850b2070001738c09260294.jpg


老师,这样是不是说明设置 this.session.user 还是存储成功了?this.redirect()之后,页面中直接这样使用能获取到session的值吗:

    if  user

        //成功获取session的处理

    else

        //处理


写回答

1回答

Scott

2016-12-14

不会存储的,redirect 之后,需要重新获取一下之前的 session,一般会先把要存储的数据写入 redis 或者 mongodb 中,然后每次渲染页面之前,先把这个数据取出来,放到 this.session 里,再渲染就没问题了

0
0

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程