点击上方蓝字关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
浏览器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
【Express之session基础篇,搞开发的都会弄懂它】使用就是这么简单 。下面我们通过与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就清除了 。
今天写完了 , 下次我们还是通过一个完整的实例,来用自定义中间件方式实现用户登录状态保存的功能 。期待吧~~~~~
需要完整实例代码的可以找我要 , 或有什么讲的不正确的对方,欢迎留言 。
本文到此结束,希望对大家有所帮助!
猜你喜欢
- 冷知识:女生姨妈疼和男生蛋疼,哪个更疼?
- 真相竟是:廉价大学生就是当年廉价农民工省吃俭用培养出来的后代
- 如何彻底地卸载游戏?
- 微信放大招:QQ浏览器也可以上微信小程序了!
- 浙江湖州:PS转账记录诈骗申请执行人 这名失信人把自己送进监狱!
- 怎样免费申领一张联名卡?
- 信用卡激活时去银行柜台面签的正确姿势
- 周星驰都60岁了,还进攻web3。web3是什么?大家了解了没有?
- 又一新风口出现!到店团购,为什么能吸引互联网巨头入局?