nodes.js中的session

来源:互联网 发布:淘宝零点秒杀在哪 编辑:程序博客网 时间:2024/05/17 08:27
var express=require("express");
var bodyparser=require("body-parser");
var session=require("express-session");


var app=express();
app.use(express.static(__dirname));
app.use(bodyparser.urlencoded({extended:false}));


/*session的设置
我们知道,http协议是无状态的协议,那么服务器如何判断用户是否是同一次回话呢?
答:它是通过session id来判断的。
那么session id怎么来的?
答:cookie中的。
cookie中怎么会有session id?
答:当我们第一访问的时候,服务器取不到cookie中的session id,此时会自动生成一个session id,并将这个session id
回写到客户端的cookie中,以后我们再发请求的时候,cookie中就有session id了,所以服务器就知道你不是新的回话了。
然后,cookie的有效期默认为当前回话有效,所以当我们关闭浏览器再次打开时,由于存在本地cookie中的session id已经失效,
所以又算做是一次新的回话。
*/
app.use(session({
    secret: 'keyboard cat', //私密 sesssion id的标识
    resave: true,//每次请求是否重新设置session cookie。假设你的cookie是1分钟过期,
 //每次请求都会再设置1分钟,也就是说以最后一次请求开始算1分钟后过期
    saveUninitialized: true,//无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid
    cookie:{secure: false }, //secure 应用在https  安全的、牢固的
    cookie:{maxAge: 1000*60 } //过期时间,单位为毫秒
}))


app.post("/userLogin",function(req,res){
    req.session.uname=req.body.uname; //将当前登陆用户的用户名存到session中
    console.info(req.session);
    console.info(req.session.uname);
    res.send("1"); //回应一个1
});


app.get("/currentUserNname",function(req,res){
    res.send("当前登录用户:"+req.session.uname); //从session中获取当前登录用户的用户名
});


app.listen(80,function(err){
    if(err){
        console.info(err);
    } else{
        console.info("服务器启动成功...");
    }
});
0 0
原创粉丝点击