Express之session基础篇,搞开发的都会弄懂它

点击上方蓝字关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!

浏览器webservice的session一般是靠cookie来实现的。也就是说服务器给客户端浏览器发一段cookie。之后这个cookie就存储在浏览器端,等后来访问时,就将其一并发送到服务器端,服务器端在根据这个cookie中的值来判断这个连接用户是谁。服务器根据这个传过来的cookie建立一个session。总之,若浏览器传了cookies,就是对应的session,没有传cookie,就是新的session。

这篇说两个问题,一是session如何使用。二是session与form结合实现判断用户是否登录过与是否允许登录的完整功能。

一、session如何使用:

先通过一个简单例子来简略看一下session的使用。

使用session必须先安装好这个中间件(express-session),然后在 require进来,像下面这样初始化这个中间件:

app.use(session({secret:’www’}))

1、通过session暂存id值

重启服务后,访问:

:1234/list/666

这样这个666就存储在session中了。

2、显示暂存值

访问:

:1234/

浏览器就会输出

user id is 666

使用就是这么简单。下面我们通过与form表单结合实现一个用户登录判断的完整功能。

二、session+form实现用户登录:(主要判断:是否允许登录,是否登录过)

下面这个例子实现的是:访问目标页面,服务通过判断这个用户是否登录过,如果登录过就直接进入页面用session保持登录状态,如果没有登录过,就跳到登录页面,用户通过表单输入用户名和密码登录,登录成功后跳到目标页面。

1、安装中间件

首先我们需要安装三个中间件:

express-handlebars:用来模板用户登录界面。

express-session:用来保存用户信息。

body-parser:用来获取用户登录信息。

2、实现用户登录信息获取与暂存储:(是否允许登录)

实现一个form表单的post请求

由上面图可知,有一个用户名称数组useArr,这个数组可以理解为数据库里存放的用户信息。用户登录提交后,首先通过这个数组判断这个用户能否允许登录,如果允许(这个数组里有它的用户名),则把这个用户名给session暂存起来,下次就不需要在重新登录了。

3、判断是否登录过

访问目标页面时用session保持登录状态,首先通过 session值来判断这个用户是否登录过,如果登录过,则直接进入页面,如果没有登录过,就跳到模板handlebars实现的登录页面。(这个地方需要明白的是,如没有做特殊时间设置时,只有当服务器重启时session值才会被清除)。来看一下代码:

4、中间件使用的代码是这样的

上面给出的是主要代码,关于中间件使用的代码,除了模板的使用我们之前贴过,body-parser和express-session我这里贴一下,首先需要引入,这是中间件使用的惯例。

有用户名称数组useArr是这样的:

启动服务:

node form.js

访问:

:1234/

三、结尾总结:

一、 关于以上讲session使用的例子中,不用去使用request.session.id来存储数据,这样会出现乱码,因为id是session内部的一个属性。

二、参数666,无论我访问多少次都是666,唯独我从新启动服务后,这个session就清除了。

今天写完了,下次我们还是通过一个完整的实例,来用自定义中间件方式实现用户登录状态保存的功能。期待吧~~~~~

需要完整实例代码的可以找我要,或有什么讲的不正确的对方,欢迎留言。

本文到此结束,希望对大家有所帮助!

关于作者:

生活百科常识网