zoukankan      html  css  js  c++  java
  • express框架之session 存储

    1.express-session 是基于express框专门用于处理session的中间件。这里不谈express-session怎么安装,只给出相应的实例代码。另外,session的认证机制离不开cookie,需要同时使用cookieParser 中间件

    express框架之session 内存存储

    var express = require('express');
    var session = require('express-session');
    var cookieParser = require('cookie-parser');
    
    var app = express();
    
    app.use(cookieParser());
    app.use(session({
        secret: '12345',
        name: 'testapp',   //这里的name值得是cookie的name,默认cookie的name是:connect.sid
        cookie: {maxAge: 80000 },  //设置maxAge是80000ms,即80s后session和相应的cookie失效过期
        resave: false,
        saveUninitialized: true,
    }));
    
    
    app.get('/awesome', function(req, res){
        
        if(req.session.lastPage) {
            console.log('Last page was: ' + req.session.lastPage + ".");    
        }    
        req.session.lastPage = '/awesome'; //每一次访问时,session对象的lastPage会自动的保存或更新内存中的session中去。
        res.send("You're Awesome. And the session expired time is: " + req.session.cookie.maxAge);
    });
    
    app.get('/radical', function(req, res){
        if (req.session.lastPage) {
            console.log('Last page was: ' + req.session.lastPage + ".");    
        }
        req.session.lastPage = '/radical';  
        res.send('What a radical visit! And the session expired time is: ' + req.session.cookie.maxAge);
    });
    
    app.get('/tubular', function(req, res){
        if (req.session.lastPage){
            console.log("Last page was: " + req.session.lastPage + ".");    
        }
    
        req.session.lastPage = '/tubular';
        res.send('Are you a suffer? And the session expired time is: ' + req.session.cookie.maxAge);
    });
    
    
    app.listen(5000);
    

    express框架之session 数据库存储  

    上面的这种内存存储,只能短期存储,要想存个几周,就得用上数据库了。下面采用mongodb,

    这里,我是首先打开自己电脑的mongodb

    然后,启动服务

    var express = require('express');
    var session = require('express-session');
    var cookieParser = require('cookie-parser');
    var MongoStore = require('connect-mongo')(session);
    var app = express();
    
    app.use(cookieParser());
    var settings = {
    cookieSecret: 'myblog',
    db: 'blog',
    host: 'localhost',
    port: 27017
    }


    app.use(session({
    secret: settings.cookieSecret,
    key: settings.db,//cookie name
    cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
    resave: false,
    saveUninitialized: true,
    store: new MongoStore({
    url: 'mongodb://localhost/blog'
    })
    }));
    app.get('/awesome', function(req, res){
    if(req.session.lastPage) {
    console.log('Last page was: ' + req.session.lastPage + ".");
    }
    req.session.lastPage = '/awesome'; res.send("You're Awesome. And the session expired time is: " + req.session.cookie.maxAge); });
    app.get('/radical', function(req, res){
    if (req.session.lastPage) { console.log('Last page was: ' + req.session.lastPage + "."); }
    req.session.lastPage = '/radical'; res.send('What a radical visit! And the session expired time is: ' + req.session.cookie.maxAge); });
    app.get('/tubular', function(req, res){ if (req.session.lastPage){ console.log("Last page was: " + req.session.lastPage + "."); }
    req.session.lastPage = '/tubular'; res.send('Are you a suffer? And the session expired time is: ' + req.session.cookie.maxAge); });
    app.listen(5000);

      

    最后,在存入数据之后,可以使用Robomongo查看存入的数据,并且可以看见,数据过期的时间

  • 相关阅读:
    Java程序:从命令行接收多个数字,求和并输出结果
    大道至简读后感
    大道至简第一章读后感Java伪代码
    Creating a SharePoint BCS .NET Connectivity Assembly to Crawl RSS Data in Visual Studio 2010
    声明式验证超时问题
    Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"
    Upgrading or Redeploying SharePoint 2010 Workflows
    Upgrade custom workflow in SharePoint
    SharePoint 2013中Office Web Apps的一次排错
    How to upgrade workflow assembly in MOSS 2007
  • 原文地址:https://www.cnblogs.com/muamaker/p/6806895.html
Copyright © 2011-2022 走看看