express学习-----使用session、cookie判断用户登录状态

一. 使用cookie-parser、express-session来处理cookie和session。
// 引入
const cookieParser = require('cookie-parser');
const session = require('express-session');
// 使用
app.use(cookieParser('swq'));// 'swq'是自定义字符串,用来对cookie进行签名,提高安全性。
app.use(session({
    secret: 'swq',
    resave: false,
    saveUninitialized: true
}))
二. 登陆成功后,将用户ID生成cookie。
home.login = (req, res, next) => {
    let data = req.body;
    if(data.username == '') {
        return res.send({
  resultCode: 400, resultMsg: '用户名为空'});
    } else if(data.password == '') {
        return res.send({
  resultCode: 400, resultMsg: '密码为空'});
    } else {
        User.findOne({
  name: data.name}).then(user => {
            if(!user) {
                return res.send({
  resultCode: 400, resultMsg: '用户不存在'});
            }
            if(data.password != user.password) {
                return res.send({
  resultCode: 400, resultMsg: '密码错误'});
            }
            //生成cookie
            auth.gen_session(user, res);
            return res.send({
  resultCode: 200, resultMsg: '登录成功'});
        })
    }
}
// 生成cookie
gen_session: (user, res) => {
    let auth_user = `${user._id}`;
    res.cookie('suweiqing', auth_user, {
        path: '/',
        signed: true,//对cookie密码进行加密的话, 需要使用到cookieParser
        httpOnly: true,
        maxAge: 30 * 24 * 60 * 60 * 1000
    });
},
三. 编写中间件,判断用户是否登录(判断session中是否有用户信息)。
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值