当前大部分网站都有了无线端,对无线端的Cookie如何处理也是很多程序员必须考虑的问题。
在无线端发展初期,后端的服务系统未必和PC的服务系统是统一的,这样就涉及在一端调用多个系统时如何做到服务端Session共享的问题了。有两个明显的例子:一个是在无线端可能会通过手机访问无线服务端系统,同时也会访问PC端的服务系统,如果他们两个的登录系统没有统一的话,将会非常麻烦,可能会出现二次登录的情况;另一个是在手机上登录以后再在PC上同样访问服务端数据,Session能够共享就决定了客户端是否要再次登录。
针对这两种情况,目前都有理想的解决方案。
多端共享Session
多端共享Session必须要做的工作是不管是无线端还是PC端,后端的服务系统必须统一会话架构,也就是两边的登录系统必须要基于一致的会员数据结构、Cookie与Session的统一。也就是不管是PC端登录还是无线端登录,后面对应的数据结构和存储要统一,写道客户端的Cookie也必须一样,这时前提条件。
那么如何做到这一点?就是要实现分布式的Session框架。如下图所示。
上面服务端统一Session后,在同一个终端上不管是访问哪个服务端都能做到登录状态统一。例如不管是Native还是内嵌Webview,都可以拿统一的Session ID去服务端验证登录状态。
多终端登录
目前很多网站都会出现无线端和PC端多端登录的情况,例如可以通过扫码登录等。这些是如何实现的呢?其实比较简单,如下图所示。
这里手机端在扫码之前必须是已经登录的状态,因为这样才能获取到底是水将要登录的信息,同时扫码的二维码也带有一个特定的标识,标识是这个客户端通过手机端登录了。当手机端扫码成功后,会在服务端设置这个二维码对应的标识为已经登录成功,这时PC客户端会通过将“心跳”请求发送到服务端,来验证是否已经登录成功,这样就称为一种便捷的登录方式。