angular二、nodejs、redis、session前端
基于实现目标,咱们在进行以前先分析下需求。node
一、实现用户登陆、验证;
想实现这个需求,思路无非就是从前端用post将用户名、密码(MD5)传到后端,后端再根据用户id来查询用户,而后比较密码,若是成功则返回true及对应的用户信息,反之返回相应信息;redis
二、用户信息持久化;
用户信息持久化其实方法也不少,例如cookies、localStroage、sessionStorage、session、redis及mongodb等;下面简单说明下他们各自的特色:mongodb
cookies: 最古老,基本全部浏览器支持。容量小,仅有4k,即一个域下最多可存大概20条记录。可设置存活期,不安全,当服务器端多并发时,为考虑减轻对服务器压力,可将数据存放在cookies。同一域,同一浏览器内多窗口(标签)间能够共享,没有设置存放期时关闭浏览器cookies消失;数据库
localStroage:基于HTML5的本地存储,容量大,可永久保存数据,直至用户主动清空。同一浏览器多窗口(标签)共享后端
sessionStorage:基于HTML5的本地存储,容易较大。区别了localStroage的特色是生命周期仅存放于会话期间,关闭浏览器即消失。区别于cookies特色是,容易大,多窗口(标签)间数据不共享。浏览器
session:基于服务器端的缓存,可设置存活期,容量大,安全性高。同一域内数据可共享,可根据头部带的cookie读取相应的信息,考虑信息安全性,可以使用session.缓存
redis:是目前比较流行的运行于服务器端的缓存数据库。容量大,安全性也高,可设置存活期,过时即消毁。安全
mongodb:做用也redis相似,都是缓存数据库。服务器
三、用户信息有无存活期;
这里须要考虑的问题是当获得了正确的用户信息后,保存在哪里。经过上面的分析,咱们很容易会选择session,由于其安全性高。因此,咱们获得一个方案是session+redis。将后端生成session信息并保存到redis中。
四、设计登陆方案
这里我用两张流程图来表达登陆方案,图1,登陆保存会话;图2,刷新读取会话;
后续