express中使用Session认证

  1. 安装express-session中间件
npm install express-session
  1. 配置express-session中间件
  • 通过app.use()来注册中间件
// 1.导入express模块
const express = require('express')

// 2.创建express服务器的实例
const app = express()

// 3.配置Session中间件
const session = require('express-session')
app.use(session({
    secret:'sessionLearn',
    resave:false,
    saveUninitialized:true
}))
  1. 向session中存数据
  • 当express-session中间件配置成功后,即可通过req.session来访问和使用session对象,从而存储用户的关键信息
// ------------------------编写登陆的接口,并直接修改浏览器端的session--------------------

app.post('/api/login',(req,res)=>{
    // 判断用户提交的登陆信息是否正确
    if(req.body.username !== 'admin' || req.body.password !== '000000'){
        return res.send({staus:1,msg:'登陆失败'})
    }

    // 将登陆成功后的信息,保存到Session中
    req.session.userInfo = req.body //用户的信息
    req.session.isLogin = true  //用户的登陆状态
})
  1. 从session中取数据
// ----------------------编写GET接口,展示提取session信息的过程------------------

app.get('/api/username',(req,res)=>{
    // 判断当前是否登陆
    if(!req.session.isLogin){
        return res.send({status:1,msgg:'fail'})
    }

    // 从session中获取用户信息,并发送
    res.send({
        status:0,
        msg:'success',
        username:req.session.userInfo.username
    })
})
  1. 清空session
  • 调用req.session.destory()函数,即可清空服务器保存的当前用户的session信息
// ------------------------退出登陆的接口--------------------

app.post('/api/logout',(req,res)=>{
    // 清空服务器端的session
    req.session.destory()

    // 对浏览器端响应信息
    res.send({
        status:1,
        msg:'退出登陆成功'
    })
})
完整session实例
// 1.导入express模块
const express = require('express')

// 2.创建express服务器的实例
const app = express()

// 3.配置Session中间件
const session = require('express-session')
app.use(session({
    secret:'sessionLearn',
    resave:false,
    saveUninitialized:true
}))

// -----------------------------------------------

// 托管静态页面
app.use(express.static('./pages'))
// 解析 POST 提交过来的表单数据
app.use(express.urlencoded({ extended: false }))

// ------------------------编写登陆的接口--------------------

app.post('/api/login',(req,res)=>{
    // 判断用户提交的登陆信息是否正确
    if(req.body.username !== 'admin' || req.body.password !== '000000'){
        return res.send({staus:1,msg:'登陆失败'})
    }

    // 将登陆成功后的信息,保存到Session中
    req.session.userInfo = req.body //用户的信息
    req.session.isLogin = true  //用户的登陆状态
})

// ----------------------获取用户信息的接口------------------

app.get('/api/username',(req,res)=>{
    // 判断当前是否登陆
    if(!req.session.isLogin){
        return res.send({status:1,msgg:'fail'})
    }

    // 从session中获取用户信息,并发送
    res.send({
        status:0,
        msg:'success',
        username:req.session.userInfo.username
    })
})

// ------------------------退出登陆的接口--------------------

app.post('/api/logout',(req,res)=>{
    // 清空服务器端的session
    req.session.destory()

    // 对浏览器端响应信息
    res.send({
        status:1,
        msg:'退出登陆成功'
    })
})
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容