浏览器webservice的session一般是靠cookie来实现的。也就是说服务器给客户端浏览器发一段cookie。之后这个cookie就存储在浏览器端,等后来访问时,就将其一并发送到服务器端,服务器端在根据这个cookie中的值来判断这个连接用户是谁。服务器根据这个传过来的cookie建立一个session。总之,若浏览器传了cookies,就是对应的session,没有传cookie,就是新的session。
这篇说两个问题,一是session如何使用。二是session与form结合实现判断用户是否登录过与是否允许登录的完整功能。 一、session如何使用:先通过一个简单例子来简略看一下session的使用。 使用session必须先安装好这个中间件(express-session),然后在 require进来,像下面这样初始化这个中间件:
1、通过session暂存id值 重启服务后,访问:
这样这个666就存储在session中了。 2、显示暂存值 访问:
浏览器就会输出
使用就是这么简单。下面我们通过与form表单结合实现一个用户登录判断的完整功能。 二、session+form实现用户登录:(主要判断:是否允许登录,是否登录过)下面这个例子实现的是:访问目标页面,服务通过判断这个用户是否登录过,如果登录过就直接进入页面,如果没有登录过,就跳到登录页面,用户通过表单输入用户名和密码登录,登录成功后跳到目标页面。 1、安装中间件 首先我们需要安装三个中间件: express-handlebars:用来模板用户登录界面。 express-session:用来保存用户信息。 body-parser:用来获取用户登录信息。
2、实现用户登录信息获取与暂存储:(是否允许登录) 实现一个form表单的post请求 由上面图可知,有一个用户名称数组useArr,这个数组可以理解为数据库里存放的用户信息。用户登录提交后,首先通过这个数组判断这个用户能否允许登录,如果允许(这个数组里有它的用户名),则把这个用户名给session暂存起来,下次就不需要在重新登录了。 3、判断是否登录过 访问目标页面时,首先通过 session值来判断这个用户是否登录过,如果登录过,则直接进入页面,如果没有登录过,就跳到模板handlebars实现的登录页面。(这个地方需要明白的是,如没有做特殊时间设置时,只有当服务器重启时session值才会被清除)。来看一下代码: 4、中间件使用的代码是这样的 上面给出的是主要代码,关于中间件使用的代码,除了模板的使用我们之前贴过,body-parser和express-session我这里贴一下,首先需要引入,这是中间件使用的惯例。 有用户名称数组useArr是这样的: 启动服务:
访问:
三、结尾总结:一、 关于以上讲session使用的例子中,不用去使用request.session.id来存储数据,这样会出现乱码,因为id是session内部的一个属性。 二、参数666,无论我访问多少次都是666,唯独我从新启动服务后,这个session就清除了。 今天写完了,下次我们还是通过一个完整的实例,来用自定义中间件方式实现用户登录状态保存的功能。期待吧~~~~~ 需要完整实例代码的可以找我要,或有什么讲的不正确的对方,欢迎留言。 |
| 本文出处: http://www.toutiao.com/a6432535513161220353/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|