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