知识点Angular2,nodejs,redis,session的准备都是基于实现目标,我们先分析需求再进行。1、实现用户登录和验证;实现这个需求,思路无非就是将用户名和密码(MD5)从前端发送给后端,后端根据用户id查询用户,然后比对密码。如果成功,则返回true和相应的用户信息,否则返回相应的信息;2、用户信息持久化;用户信息持久化的方法其实有很多,比如cookies、localStroage、sessionStorage、session、redis、mongodb;下面简单介绍一下它们各自的特点:cookies:最古老的,基本上所有浏览器都支持。容量小,只有4k,即一个域下最多可以存放20条记录。可以设置生存期,不安全。服务器并发时,为了减轻服务器的压力,可以将数据保存在cookie中。在同一个域中,可以共享同一个浏览器中的多个窗口(选项卡)。未设置保存期限时,cookies会在浏览器关闭时消失;localStroage:基于HTML5的大容量本地存储,可以永久存储数据,直到用户主动清除。同一浏览器的多个窗口(选项卡)共享sessionStorage:基于HTML5的本地存储,容易变大。localStroage的区别在于生命周期只在session期间保存,浏览器关闭后消失。与cookies不同的是,它们容易做大,而且数据不在多个窗口(标签)之间共享。session:基于服务器端缓存,可设置生存期,容量大,安全性高。同域数据可以共享,根据header中的cookie读取相应的信息。考虑到信息安全,可以使用session.redis:它是目前流行的一种运行在服务器端的缓存数据库。容量大,安全性高。可以设置一个生存期,过期就销毁。mongodb:功能类似于redis,都是缓存数据库。3、用户信息是否有存留期限;这里需要考虑的问题是获取到正确的用户信息后,将其保存到哪里。通过以上分析,我们可以很容易地选择session,因为它安全性高。因此,我们得到一个解决方案,就是session+redis。后端生成session信息保存在redis中。4、设计登录方案这里我用两张流程图来表达登录方案,图1,登录和保存session;图2,刷新阅读会话;跟进