改變ASP.NET_SessionId值

來源:互聯網
上載者:User

通過改變ASP.NET_SessionId的值,來擷取ASP.NET_SessionId對應所儲存的Session值。

1)因為Session的初始化是在AcquireRequestState事件,所以必須在調用AcquireRequestState事件之前對ASP.NET_SessionId的值進行修改。

2)ASP.NET_SessionId的值進行修改後,必須把修改後的值,返回到用戶端,進行用戶端的cookie值修改。

     1.ASP.NET_SessionId的值,必須要符合其規則,不然的話,系統會預設產生一個新的。若修改的ASP.NET_SessionId是在另外一個域下,規則不符合,系統會產生一個新的

ASP.NET_SessionId值,賦予此域下的ASP.NET_SessionId,並未其對應的域下產生一個新的ASP.NET_SessionId。

     2.當然,前面第一點提到的是,在系統內部賦予response值前進行修改response值的情況。若在系統內部賦予response值之後進行修改,就不會受此影響。

 

SessionID的產生過程

首先SessionID是在SessionStateModule裡產生的,是在AcquireRequestState事件裡產生的,調用的方法是:

 

 internal bool CreateSessionId()
    {
        bool flag;
        this._rqId = this._idManager.CreateSessionID(this._rqContext);
        this._idManager.SaveSessionID(this._rqContext, this._rqId, out flag, out this._rqAddedCookie);
        return flag;
    }

 通過上面我們可以看到,this._rqId就是產生的SessionID,調用的方法是SessionIDManger的執行個體的CreateSessionID方法,調用方法如下:

 

public virtual string CreateSessionID(HttpContext context)
    {
        return SessionId.Create(ref this._randgen);
    }

從上面的代碼我們可以看到,其調用的是SeesionId類的靜態方法Create,參數為ref類型,所以通過思考,SessionID的有效期間就是SessionIDManger的執行個體的生命週期。方法如下:

internal static string Create(ref RandomNumberGenerator randgen)
    {
        if (randgen == null)
        {
            randgen = new RNGCryptoServiceProvider();
        }
        byte[] data = new byte[15];
        randgen.GetBytes(data);
        return Encode(data);
    }

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.