node.js - express-session 怎么支持无 cookie 的微信小程序session
问题描述
之前我的 session 是仿照 cnodejs 的源码处理的,使用的 express-session 、cookie 获取信息。现在我想增加一个微信小程序的登录接口,维护登录状态。小程序不能使用 cookie 微信团队提供了一个 weapp-sesion
我想请教一下大家,我现在应该怎么更改哪?才能适合两者
问题解答
回答1:如果熟悉http session的原理,session问题就好解决了。常见的session保持方式是,当浏览器向服务端发起http请求时,服务端检查在http 头部cookie参数里是否包含sessionid,如果有sessionid就根据sessionid去查看存储在服务器端的session,session里保存的当前会话的一些信息。如果sessionid没有服务端就会分配一个,写到cookie字段里,浏览器下次发起其它请求的时候带上。而在小程序里所有的请求都通过wx.request API来发起的。如果对wx.request API包装一下,使其每次向服务端发起请求时也添加一个名称为Cookie的http header,这样也不用对服务端作改动。服务端分配的sessionid使用wx.setStorageSync API存储在微信客户端。http://www.wxapp-union.com/ar...
也就是说客户端微信小程序里面解决了存储sessionid的问题服务端nodejs实现的session功能和普通的session实现没区别。在小程序里面每次请求你服务器的时候把sessionid一起发过去,在服务器你先判断是否有你发送过去的sessionid参数,若有就继续操作session有关操作,若没有就分配一个sessionid和response一起发送给客户端微信小程序,在小程序里面每次收到response的时候判断下有没有你设置的sessionid,要是由就存储到本地,下次请求的时候一起发过去就是了。
平时我们浏览器里面的cookie也就只存储sessionid发给服务器用来识别用户身份而已,小程序每提供session我们当然可以用wx.setStorageSync API存储在微信客户端代替cookie。
相关文章:
1. docker-machine添加一个已有的docker主机问题2. java-ee - JAVA的注解@Api和@ApiOperation的作用是什么,怎么跳转页面的3. java - mybatis会自己缓存自己生成过的prestatement吗4. java - 原生CGLib内部方法互相调用时可以代理,但基于CGLib的Spring AOP却代理失效,为什么?5. java - tomcat服务经常晚上会挂,求解?6. node.js - node express 中ajax post请求参数接收不到?7. apache - nginx 日志删除后 重新建一个文件 就打不了日志了8. 怎么能做出标签切换页的效果,(文字内容随动)9. mysql - mongo如何对一个collection进行顺序上的调整呢?10. chrome浏览器怎么使用
