zoukankan      html  css  js  c++  java
  • Express session 模块的扩展

    session 数据的处理是很敏感的,在每个请求的处理逻辑块中直接调用 req.session 显得很不规范,所以需要一个模块来单独管理session的读写。

    再考虑不能为每个用户的session添加读写function,因为这样会导致性能损耗,所以必须对session对象做一个基类扩展。

    在无法显式知道session 构造函数的情况下只能使用 constructor 关键字,进而获取其 prototype 属性,实现原型继承。

    session.js

    var sessionConstructed = false;
    
    exports.get = function (req) {
        var session = req.session;
    
        if (!sessionConstructed) {
            var cst = session.constructor;
    
            cst.prototype.userInfo = function () {
                return this.user;
            };
            cst.prototype.initUser = function (username, source) {
                this.user = {
                    username: username,
                    source: source
                };
            };
            cst.prototype.clearUser = function () {
                this.user = null;
            };
    
            cst.prototype.checkVerifyCode = function (code) {
                if (!this._verifyCode || this._verifyCode != code.toLowerCase()) {
                    this._verifyCode = null;
                    return false
                } else {
                    return true;
                }
            }
            cst.prototype.setVerifyCode = function (code) {
                this._verifyCode = code.toLowerCase();
            }
            sessionConstructed = true;
        }
    
        return session;
    }

    howToUse.js

    var session = require('./session.js')
    
    function onSomeRequst(req, res){
    
        var ses = session.get(req);
    
        var userInfo = session.get(req).userInfo();
    
        var verifyCode = '1234';
    
        var isVerifyCodeRight = session.checkVerifyCode(verifyCode);
    }
  • 相关阅读:
    每日一题20201109(15. 三数之和)
    每日一题20201106(169. 多数元素)
    每日一题之20201103(941. 有效的山脉数组)
    每日一题之20201102(349. 两个数组的交集)
    【USACO4.4】追查坏牛奶
    【九省联考2018】一双木棋
    【NOI2013】向量内积
    【HNOI2013】游走
    【ZJOI2008】骑士
    【HEOI2014】大工程
  • 原文地址:https://www.cnblogs.com/straybird/p/3099251.html
Copyright © 2011-2022 走看看