web开发模式分为两种,一种是服务器渲染页面信息将页面直接传递给浏览器,一种是前后端分离,前端负责页面UI,后端负责编写接口,这种就得浏览器去运行代码,减轻服务器的压力。
这两种web开发模式采用了不一样的鉴权方法
这篇文章是关于使用session鉴定用户状态的
在开发之前,我们知道服务器和浏览器之间运作的流程是怎么样的
在使用express-session之前我们要先下载相关的express-session包,在终端执行命令
npm i express-session
//创建服务器
const express = require('express')
const app = express()
//导入express-session
const session = require('express-session')
//使用express-session中间件
app.use(session({
secret:'express_session',
resave:false,
saveUninitialized:true
}))
app.listen(80,()=>{
console.log('127.0.0.1:80')
})
secret是我们自己设置的
然后我们创建几个路由检验一下
//登录
app.post('/api/login',(req,res)=>{
if(req.body.username !== 'admin'|| req.body.password !== '123456'){
return res.send({status:1,msg:'err!!!'})
}
//登录成功将用户信息保存到session中
req.session.user = req.body
req.session.islogin = true
res.send({status:0,msg:'success!!!'})
})
我们将用户信息保存到session中时要确保已经使用了express-session中间件
如果登录成功也要修改用户登录状态,退出的时候除了要将session清除还要修改用户登录的状态
//获取用户信息
app.get('/api/username',(req,res)=>{
if(!req.session.islogin){
return res.send({status:1,msg:'err'})
}
res.send({
status:0,
msg:'success',
username:req.session.user.username
})
})
// 用户退出
app.post('/api/loginout',(req,res)=>{
req.session.destroy()
res.send({
status:1,
msg:'loginout success!!!'
})
})
运行服务器,使用postman检验一下
先不登录直接看看查看用户信息的接口
因为还没有登录信息所以服务器是没有用户信息的
然后检验下登录接口
看看查看用户信息能不能正常使用
再看看loginout接口,也可以正常退出登录状态