在做一个多系统sso单点登录时,遇到一个坑(asp.net):
Request.Cookies[key]
读取cookie时不区分大小写。由于最初项目多没有做到统一sso token key的大小写设定,导致部分系统登录出现问题。
经过测试发现读取cookie不区分,设置cookie区分。
一轮操作猛如虎,得出如下解决方案:
1、读取cookie:
string GetCookie(string key) { string value = ""; for (int i = 0; i <= Request.Cookies.Count - 1; i++) { if (Request.Cookies.Keys.Get(i).Equals(key)) { res = Request.Cookies.Get(i).Value; break; } } return value; }
2、删除cookie(设置过期时间):
void clearCookies(string key) { string[] keyList = Request.Cookies.AllKeys; foreach (string item in keyList) { if (item.ToLower().Equals(key.ToLower())) { HttpCookie cookie = new HttpCookie(item, ""); cookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(cookie); } } }
记录一下。