好了,上一期,我们讲到了浏览器访问服务器,如何认证的问题,使用cookie来识别,那么session就是识别的机器,所以我们这期来讲解一下session的应用;
在浏览器发起请求的时候,服务器收到该请求并且存储了一个cookie,然后再发送一个带有cookie的响应头,下次浏览器发送的时候就会带有这个cookie,然后服务器就会在内存中查找这个记录,如果有的话就响应响应的数据获取;
我们可以创建一个服务器来执行这种认证操作,用到的模块为express和express-sessiom模块:
1、安装两个模块
npm i express@4.17.1
npm i express-session
2、导入模块
//1.1 安装并导入模块
const express = require('express')
const session = require('express-session')
3、创建服务器,这个相信大家都会吧,不会的话就去看之前的博客
const express = require('express')
//1.2 创建一个服务器
const app = express()
//1.5 打开服务器
app.listen(8080,()=>{
console.log('server running at http://127.0.0.1:8080')
})
4、创建好了服务器,那么我们就通过浏览器发送post请求,其中带有body对象的表单,通过请求对象获取到表单数据,然后存储到请求对象的session对象中,根据现有的字符串来判断该表单数据是否符合条件:
//登录处理
app.post('/user/login',(req,res)=>{
if(req.body.username != 'tony' || req.body.password != 1111){
return console.log('登录失败')
}else{
//2.2 保存数据到session对象中
//注意我们的数据要存储在req上
req.session.username = req.body.username
req.session.password = req.body.password
//2.3 将登录状态返回给浏览器
res.send({
statu: 0 ,
result:'登陆成功'
})
}
})
不过在这之前,我们需要挂载一个session中间件,如果没有挂载则不会有session这个对象:
//1.4 挂载中间件
app.use(session(
{
//这个字符串自定义
secret:'test',
resave:false,
saveUninitialized:true
}
))
这里除了secret是自己随意定义的字符串外,其他都是固定写法,复制即可;
5、之前我们讲过编码格式的问题,既然要使用表单,不要忘了挂载解析中间件:
//2.1 使用编码中间件
app.use(express.urlencoded({extended:false}))
这个要放在最前面
6、使用postman进行测试,使用命令编译,这里推荐使用 nodemon ./文件名
可以看到提示成功,我这里提交的表单是和代码数据一致的,如果不一致:
则会提示登陆失败;
下面是全部代码,除了这些其实还可以挂载很多中间件:
//1.1 安装并导入模块
const express = require('express')
const session = require('express-session')
//1.2 创建一个服务器
const app = express()
//2.1 使用编码中间件
app.use(express.urlencoded({extended:false}))
//1.4 挂载中间件
app.use(session(
{
//这个字符串自定义
secret:'test',
resave:false,
saveUninitialized:true
}
))
//1.3 挂载路由
//登录处理
app.post('/user/login',(req,res)=>{
if(req.body.username != 'tony' || req.body.password != 1111){
return console.log('登录失败')
}else{
//2.2 保存数据到session对象中
//注意我们的数据要存储在req上
req.session.username = req.body.username
req.session.password = req.body.password
//2.3 将登录状态返回给浏览器
res.send({
statu: 0 ,
result:'登陆成功'
})
}
})
//检查处理
app.post('/user/logincheck',(req,res)=>{
console.log(
{
'username':req.session.username,
'password':req.session.password
}
)
res.send({
statu:0,
result:'检查成功'
})
})
//退出处理
app.post('/user/loginout',(req,res)=>{
if(req.body.username == 'tony' && req.body.password == 1111 ){
req.session.destroy()
console.log('信息更新')
res.send(
{
statu:0,
result:'用户退出'
}
)
}else{
res.send(
{
statu:1,
result:'退出失败'
}
)
}
})
//1.5 打开服务器
app.listen(8080,()=>{
console.log('server running at http://127.0.0.1:8080')
})
好了,今天就这些内容,欢迎分享