美文网首页
cookie和seesion使用

cookie和seesion使用

作者: 橙赎 | 来源:发表于2020-03-04 18:55 被阅读0次

一、cookie
在koa2中的ctx对象直接提供了cookie的set和get方法
写入cookie:ctx.cookies.set(name, value, [options])
读取cookie:ctx.cookies.get(name, [options])
具体使用:

const Koa = require('koa');;
const Router = require('koa-router');
const Views = require('koa-views');
const BodyParser = require('koa-bodyparser');
const Static = require('koa-static');

//创建实例
const app = new Koa();
const router = new Router();

//配置静态资源中件间
app.use(Static(__dirname + "/static"));

//配置ejs模板中间件
app.use(Views('views', {
    extension: 'ejs'
}));

//配置bodyparser中间件
app.use(BodyParser());

//路由
router.get('/index', async ctx => {
    //保存cookie到浏览器客户端
    //userinfo=admin
    ctx.cookies.set('userinfo', 'admin', {
        maxAge: 10 * 1000
    });
    await ctx.render('index', {userinfo:''});
});

router.get('/main',async ctx=>{
    //获取cookie信息
    let userinfo = ctx.cookies.get('userinfo');
    console.log(userinfo);
    ctx.body = userinfo;
})

app.use(router.routes(), router.allowedMethods());

app.listen(3000);

可以通过浏览器设置查看cookie是否保存在浏览器



同时还可以使用检查功能查看是否取到存储的cookie


二、session

概念:session是服务端技术,不同的浏览器客户端访问服务端时,会在服务器创建一个其独享的session对象,session代表着服务端和客户端一次会话的过程,session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的web之间跳转时,存储在session对象的变量将不会丢失。而是在整个会话过程中一直存在下去。当客户端关闭对话,或者sesion超时时会话结束。

  • 安装:npm i koa-session

  • 引用:const Session = require('koa-session');

使用:
配置session中间件:

//配置session的中间件
app.keys = ['secret-web-yuguo'];   /**cookie的签名 默认*/
const CONFIG = {
    key: 'koa:sess', /** 默认 */
    maxAge: 10000,  /**  cookie的过期时间 */
    overwrite: true, /** 默认 可以重写过期时间 */
    httpOnly: true, /**  true表示只有服务器端可以获取 cookie */
    signed: true, /** 默认 签名 */
    rolling: true, /** 在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false) */
    renew: false, /** 当用户进行浏览器操作时刷新 cookie 过期时间 */
};
app.use(Session(CONFIG, app));

保存信息到session:

router.get('/index' ,async ctx=>{
    ctx.session.userinfo ='test'//保存信息到session,以key=value的方式
    await ctx.render('index',{})
})

获取session:

router.get('/user' ,async ctx=>{
    let userinfo =ctx.session.userinfo
    console.log(userinfo)
    //渲染到index.ejs页面
    await ctx.render('index',{user:userinfo})
})

index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>主界面</div>
   <div><%= user %></div>
</body>
</html>

相关文章

网友评论

      本文标题:cookie和seesion使用

      本文链接:https://www.haomeiwen.com/subject/uizblhtx.html