新增AI编程课程,引领技术教育新趋势
exports.session = { type: 'redis', common: { cookie: { name: 'thinkjs', keys: ['werwer', 'werwer'], signed: true } }, redis: { handle: redisSession, host: '127.0.0.1', port: 6379, password: 'a123456' } };
设置的由redis的服务地址host,端口,以及redis的密码,redis的搭建和配置,参考安装window下的redis,redis可视化管理工具(Redis Desktop Manager)安装,基础使用,实例化项目这篇文章。
1.2 在每一次前端请求的路由的时候,都会去redis服务器中去取userInfo的信息
如果为空,返回前端data为空,前端在路由过滤中,跳到登陆页,如果有值就正常返回。
async __before() { let user = await this.session("userInfo"); if(user) { this.user = user; } else { this.user = ''; } }
这个在nodejs的控制器controller里,在每一次前端的请求发送到后端的时候,都会去redis的取userInfo的值,
let user = await this.session("userInfo");这个userInfo的值也是自己在登陆的时候,把登陆成功之后的个人信息加入到redis服务中
1.3 在登陆成功的时候讲个人信息加到redis服务中
async loginAction() { let {username, password} = this.post();try { let user = await this.model('user').where({ username, }).find(); if(user.password && user.password == password) { // login success await this.session('userInfo',{username, userId:user.id}); return this.success("登陆成功"); } else { return this.fail("用户名或密码错误") } } catch(e) { console.log(e); return this.fail("登录失败") }
这个就是将个人信息加入到redis中
await this.session('userInfo',{username, userId:user.id});WEB 请求中经常通过 session 来维持会话的,框架通过 think-session 和 Adapter 来支持 session 功能。