Session和Cookie模拟

xiaoxiao2021-02-28  4

using System; using System.Collections.Generic; using System.Linq; using System.Web; /*  *  事实上,session是与cookie相关的,浏览器的存有sessionId,当然可能不叫这个名字,他可以存在于进程中,也可能存在  *  于硬盘,实际上,.net或者java的session都是存在于进程中,当进程关闭,session并不会销毁,而是等待session的生命周期的结束  *  当同一个浏览器浏览两个页面的时候,cookie共享,session相同,当两个ie7浏览器同时打开两个不同的窗口的时候session也是相同,  *  而关掉一个再去打开另一个,这时session不同   而firefox不管是开启新的tab 还是新窗口 都是相同的  */ public class SessionHandler {     //session集合,用来存各个浏览器的session     public static IDictionary<string, IDictionary<string, object>> sessions = new Dictionary<string, IDictionary<string, object>>();     public SessionHandler()     {         //         // TODO: 在此处添加构造函数逻辑         //     }     //获取到某一浏览器的session     public static IDictionary<string, object> getSession(string sessionId) {         if (sessions.ContainsKey(sessionId))         {             return sessions[sessionId];         }         else {             IDictionary<string, object> session = new Dictionary<string, object>();             return session;         }     }     //创建一个Cookie()     public static HttpCookie createHttpCookie(HttpRequest request,HttpResponse response) {         if (request.Cookies["sessionId"] == null)         {             string guid = Guid.NewGuid().ToString();             HttpCookie cookie = new HttpCookie("sessionId", guid);             response.SetCookie(cookie);             return cookie;         }         else {             return request.Cookies["sessionId"];         }     }     //创建一个session     public static IDictionary<string,object> createSession(HttpRequest request,HttpResponse response) {         string sessionId = string.Empty;         if (request.Cookies["sessionId"] != null)         {             sessionId = request.Cookies["sessionId"].Value;         }         else {             HttpCookie cookie = createHttpCookie(request, response);             sessionId = cookie["sessionId"];         }         return getSession(sessionId);     } }
转载请注明原文地址: https://www.6miu.com/read-1600371.html

最新回复(0)