Express + Session 实现登录验证功能
1.写在前面
当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站,过一段时间,再次打开这个网站,依然还会是登录状态。这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我们退出登录,或者保存的登录状态过期。那服务器是通过什么存储我们的登录状态的呢?答案就是Session,服务通过Session能够记录每个客户端连接的状态。关于Session的原理,在这就不多说了,本文主要介绍在Express框架中,如何使用Session来实现用户登录身份验证。
2.环境配置
在Node环境中,并没有集成Express和Session的库,因此需要进行安装,首先进入建立一个项目目录,然后在项目根目录中,利用下面命令安装四个模块。
1)Express
该模块能够让我们快速的搭建一个Web开发框架。
2)body-parser
该模块是Express模块的中间件,方便我们解析浏览器发送来的body数据。
3)express-session
该模块也是Express模块中间件,方便我们处理客户端的session。
4)ejs
该模块是一个渲染引擎。方便我们将后台变量数据绑定到前台页面上。
安装如下:
npminstallexpress--save npminstallbody-parser--save npminstallexpress-session--save npminstallejs--save
3.登录与验证
Session能够标记客户端在服务器上的状态。利用这一点,我们能够实现客户端的登录验证。Session登录验证的流程大致为:客户端若在未登录的状态下请求主页,那么服务器将该请求重定向到登录页面;客户端在登录后,服务器需要记录保存该客户端的登录状态,并给予一个活动期限,这样下一次服务器请求主页的时候,就能够判断该客户端的登录状态,若登录状态有效,直接返回客户端需要的页面,否则重定向到登录页面。
对于Session的过期时间,如果没有设置Session的过期时间,服务器会根据自己配置中默认有效期,将长期不与服务器交互的Session进行删除。
下面贴出实例代码,界面比较简单,服务器后台代码注释写的很清楚,因此就不再进行说明了。
项目的目录结构如下:
登录页面(login.html)代码如下:
Title 用户名:
密码: