首先浏览器端,我们使用LocalStorage,这个和Cookie不同
如果在浏览器端生成Cookie,默认是关闭浏览器后失效,存放数据大小一般4K左右,而sessionStorage与localStorage大小在5兆左右,在客户端生成,localStorage除非被清除,否则会永久保存,
我们每次检查LocalStorage是不是Undefined来辨别用户是否可以直接登录。如果有Id存在,那么我们直接使用调用该Id相关数据,进入界面,如果是Undefined,那么我们必须就从Login的页面开始。
同时服务端使用Redis来存储登录的状态,同时设置过期时间,比如3600秒。
每次进入页面,LocalStorage里如果存了ID都要和Redis库里的Id进行一个校验,如果在Redis中存在,那么我们就跳过Login页面,否则还是重定向到Login页面上。引入Redis是因为服务器重启后之前的会话会消失,所以使用Redis效率高同时有生命周期,符合我们的需求。