node4.X以上版本中,session用来保持用户的登陆(login)状态

1.要引入session所依赖的中间件

var cookieParser=require("cookie-parser") 
var session=require("express-session")
var mongoStore=require("connect-mongo")(session) 
var dbUrl="mongodb://localhost:27018/moviesProject"
2.
app.use(cookieParser())
app.use(session({
    secret: "imooc",          
    resave: false,          //这个属性不能省略
    saveUninitialized: true,  //不能省略不写
    store:new mongoStore({
        url: dbUrl,
        collection: "sessions"
    })
}))
3.用户提交过来的数据:用户名和密码,一般赋值给在req.session里的自定义属性
 req.session.user=user
 
就算当服务器重启后,重新刷新页面,用户依然是登陆状态
 
/ signin 用户登录
app.post("/user/signin", function (req,res) {
    var _user=req.body.user
    var _name=_user.name   //用户提交过来的用户名
    var _password=_user.password  //用户提交过来的密码
    //在数据库中查找该用户名,并验证密码
    User.findOne({name: _name},function(err, user){
        if(err){
            console.log(err)
        }
        if(!user){
            return res.redirect("/")
        }
        user.comparePassword(_password,function(err,isMatch){
            if(err){
                console.log(err)
            }
            if(isMatch){
                req.session.user=user
                console.log("password is matched")
                res.redirect("/")
            }else{
                console.log("password is not matched")
            }
        })
    })
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值