express-session的简单使用说明

Posted miaosen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了express-session的简单使用说明相关的知识,希望对你有一定的参考价值。

我们知道Internet 通过协议分为stateful和stateless两类,而http是stateless协议,客户端发送请求到服务端建立一个连接,请求得到响应后连接即中断,服务器端不会记录状态,因此服务器端想要确定是哪个客户端提交过来的请求,就必须要借助一些东西去完成:session和cookies。

express-session

session存在于服务器端,需要cookies的协议协助才能完成,服务器端和客户端通过session id来建立联系。 
express中可以用中间件来使用session,expres-session可以存在内存中,也可以存在mongodb、redis等中。想了解更多中间件可以:

https://www.npmjs.com/package/express-session

使用:

安装: npm install express-session

示例:使用session来判断用户是否已经登录,如果没有登录,则跳转到登录页

//app.js
var express = require(express);
var path = require(path);
var favicon = require(static-favicon);
var logger = require(morgan);
var cookieParser = require(cookie-parser);
var bodyParser = require(body-parser);
var session = require(express-session);

...      

//这里传入了一个密钥加session id
app.use(cookieParser(Wilson));
//使用就靠这个中间件
app.use(session({ secret: wilson}));

...
//user.js

var express = require(express);
var router = express.Router();
var options = require(../config/database-default)
var db = require(../config/db.js);

//请求作者页
router.route(/user/index).get(function(req,res,next){
    console.log(req.session.user);
    if(req.session.user){
        res.render(user,{title:作者管理});
    }else{
        req.session.originalUrl = req.originalUrl?req.originalUrl:null;//记录用户的请求路径
        console.log(req.session.originalUrl);
        res.redirect(/login);
    }
})
//login.js
var express = require(express);
var router = express.Router();
//后台管理系统登录

router.route(/login).get(function(req,res,next){
    if(req.session.islogin){
        res.locals.islogin = req.session.islogin;
    }
    if(req.cookies.islogin){
        req.session.islogin = req.cookies.islogin;
    }
    console.log(this is login)
    res.render(login,{title:登录});
}).post(function(req,res){
    console.log(req.session.originalUrl);


    //req.session.user = user;//将用户信息写入到session
    if(req.session.originalUrl){
        var redirectUrl = req.session.originalUrl;
        req.session.originalUrl = null;
    }else{//不存在原始请求路径,则将用户重定向到首页路劲
        var redirectUrl = /index;
    };
    console.log(yes);
    req.session.user = zhangsan;
    res.redirect(redirectUrl);
});

module.exports = router;

清除session

req.session.destroy();

 

以上是关于express-session的简单使用说明的主要内容,如果未能解决你的问题,请参考以下文章

express-session deprecated undefined resave option; provide resave option app.js

使用 Passport.js、express-session 和 express-mysql-session 进行用户身份验证

使用 express-session 和 JWT

完成一个简单的时间片轮转多道程序内核代码

如何使用@types/express-session?

一个简单的时间片轮转内核代码的分析(课程作业)