session &&koa2模拟登陆

一. Session是什么
1) cookie存储用户标识
2)用户信息则存储到session中方
3)session即用户信息的存储,和cookie有对应关系
二、koa2实现登陆------session设置

  1. 安装npm插件koa-generic-session: npm官网(test4)
    控制台中执行npm i koa-generic-session --save
  2. app.js中引入‘koa-generic-session’
const session = require('koa-generic-session')
  1. 定义session中间件
    配置cookie
app.use(session({
  // 配置cookie
  cookie: {
    path: '/',                    // 使cookie在整个根目录下都有效,即只要包含根目录就有效
    httpOnly: true,               // cookie只允许服务端操作
    maxAge: 24*60*60*1000         // cookie的过期时间(这里是一天)
  }
}))

配置密钥

app.keys = ['qwertyuiop**']       // 配置密钥
  1. 使用session
    1)打开routes中的index.js,添加session中间件如下
// 测试session, 记录访问次数
// session常用于登陆,存储用户信息(cookie对应), 用户访问次数作为用户信息
// cookie是登陆成功之后设置的,用户尚未登陆也可以设置cookie
// 例如:cookie: '123123' session:{'123123': {viewcount: 1}}
router.get('/session-test', async(ctx, next)=> {
  // ctx.session
  if (ctx.session.viewcount == null) {
    // 用户尚未访问
    ctx.session.viewcount = 0

  }
  // 用户已经访问过
  ctx.session.viewcount++     // 递增

  ctx.body = {
    title: 'session-test',
    viewCount: ctx.session.viewcount
  }
})

2)访问‘localhost:3000/session-test’,结果如下
在这里插入图片描述
在这里插入图片描述
三、koa2实现登陆------模拟登陆

  1. users.js中
// 模拟登陆
router.get('/login-mock', async (ctx, next) => {
  let str = '';
  const query = ctx.query       // url参数,querystring
  if (query.username) {
    // 模拟登陆成功
    ctx.session.userInfo = {
      username: query.username
    }
    str = 'login ok'
  }else {
    // 模拟登陆失败,不用处理session
    str = 'login failed'
  }
  ctx.body = str
})

此时若url访问:‘localhost:3000/users/login-mock’返回结果是
在这里插入图片描述
若访问:‘localhost:3000/users/login-mock?username=aaa’,则返回
在这里插入图片描述
2. 模拟登陆验证
user.js中

// 模拟登陆验证
router.get('/login-check-mock', async(ctx, next) => {
  ctx.body = ctx.session.userInfo || {}
})

1)访问‘localhost:3000/users/login-check-mock’
在这里插入图片描述
2)重新登陆:访问’localhost:3000/users/login-mock?username=aaa’ 之后,再重新访问‘localhost:3000/users/login-check-mock’
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值