一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - Forms身份認(rèn)證在IE11下無法保存Cookie的問題

Forms身份認(rèn)證在IE11下無法保存Cookie的問題

2019-12-03 12:06ASP.NET教程網(wǎng) ASP.NET教程

這篇文章主要介紹了Forms身份認(rèn)證在IE11下無法保存Cookie問題的解決方法,需要的朋友可以參考下

ASP.NET中使用Forms身份認(rèn)證常見的做法如下: 

1. 網(wǎng)站根目錄下的Web.config添加authentication節(jié)點(diǎn) 

復(fù)制代碼代碼如下:


<authentication mode="Forms"> 
<forms name="MyAuth" loginUrl="manager/Login.aspx" defaultUrl="manager/default.aspx" protection="All" timeout="60" /> 
</authentication> 


2. 在manager子目錄下添加Web.config文件并加入下面的內(nèi)容: 

復(fù)制代碼代碼如下:


<?xml version="1.0"?> 
<configuration> 
<system.web> 
<authorization> 
<allow roles="Admin" /> 
<deny users="*" /> 
</authorization> 
</system.web> 
</configuration> 


這樣,用戶在沒有Forms認(rèn)證的情況下訪問manager子目錄下的任何頁面均會(huì)自動(dòng)跳轉(zhuǎn)到manager/Login.aspx頁面。如果認(rèn)證成功,則會(huì)默認(rèn)回到manager/default.aspx頁面。認(rèn)證有效期為60分鐘。 

3. 添加認(rèn)證代碼。登錄按鈕中添加下面的代碼: 

復(fù)制代碼代碼如下:


if (!snCheckCode.CheckSN(txt_ValidateCode.Text)) 

snCheckCode.Create(); 
Utility.ShowMessage("校驗(yàn)碼錯(cuò)誤!"); 
return; 


string strUserName = txt_Username.Text.Trim(); 
string md5Pwd = Helper.MD5ForPHP(Helper.MD5ForPHP(txt_Password.Text)); 
lc_admin admin = null; 
bool logined = false; 

using (var context = new dbEntities()) 

admin = context.tb_admin.Where(n => n.username == strUserName).FirstOrDefault(); 

if (admin != null) 

if (admin.checkadmin != "true") 

snCheckCode.Create(); 
Utility.ShowMessage("抱歉,該賬號(hào)被禁止登錄!"); 
return; 


if (admin.password == md5Pwd) 

// Update Admin Info 
admin.loginip = Request.UserHostAddress.ToString(); 
admin.logintime = CndingUtility.DateTimeToUnixTimeStamp(DateTime.Now); 
context.SaveChanges(); 

logined = true; 




if (logined) 

// Login 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 
1, 
admin.id.ToString(), 
DateTime.Now, 
DateTime.Now.AddMinutes(60), 
false, 
"Admin", 
FormsAuthentication.FormsCookiePath 
); 
string hashTicket = FormsAuthentication.Encrypt(ticket); 
HttpCookie userCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket); 
HttpContext.Current.Response.Cookies.Add(userCookie); 

if (Request["ReturnUrl"] != null) 

Response.Redirect(HttpUtility.HtmlDecode(Request["ReturnUrl"])); 

else 

Response.Redirect("/manager/default.aspx"); 


else 

snCheckCode.Create(); 
CndingUtility.ShowMessage("用戶名或密碼不正確!"); 


MD5加密代碼: 

復(fù)制代碼代碼如下:


public static string MD5ForPHP(string stringToHash) 

var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); 
byte[] emailBytes = Encoding.UTF8.GetBytes(stringToHash.ToLower()); 
byte[] hashedEmailBytes = md5.ComputeHash(emailBytes); 
StringBuilder sb = new StringBuilder(); 
foreach (var b in hashedEmailBytes) 

sb.Append(b.ToString("x2").ToLower()); 

return sb.ToString(); 


認(rèn)證成功后默認(rèn)會(huì)將用戶登錄信息以Cookie的形式存放到客戶端,有效期為60分鐘。UserData被設(shè)置為用戶的角色,在判斷用戶是否登錄時(shí)會(huì)用到。如下面的代碼: 

復(fù)制代碼代碼如下:


if (HttpContext.Current.User.Identity.IsAuthenticated) 

int adminId = -1; 
FormsIdentity identity = (FormsIdentity)HttpContext.Current.User.Identity; 
FormsAuthenticationTicket ticket = identity.Ticket; 
string userData = ticket.UserData; 
if (userData == "Admin") 

// To do something 


上述代碼在Visual Studio中運(yùn)行一切正常!但是將網(wǎng)站發(fā)布到服務(wù)器的IIS (可能會(huì)是較低版本的IIS,如IIS 6)后,發(fā)現(xiàn)登錄功能異常。輸入用戶名和密碼后點(diǎn)擊登錄按鈕,頁面postback但并不能正確跳轉(zhuǎn),嘗試手動(dòng)訪問受保護(hù)的頁面會(huì)被自動(dòng)跳轉(zhuǎn)回登錄頁面。更奇怪的是該問題只出現(xiàn)在IE11瀏覽器上,嘗試用Firefox或Chrome訪問登錄功能運(yùn)行正常。初步懷疑是IIS設(shè)置的問題,可是IIS 6上并沒有與Cookie相關(guān)的設(shè)置,好像記得IIS 7上倒是有這個(gè)設(shè)置。但因?yàn)橹挥蠭E 11存在該問題,所以可以否定代碼本身存在任何問題。 

此外,還嘗試了降低IE 11的安全級(jí)別,重新安裝服務(wù)器上的.net framework以及下載最新的補(bǔ)丁等等,均不能解決問題。后來發(fā)現(xiàn)其實(shí)只需要簡單修改Web.config中authentication節(jié)點(diǎn)的設(shè)置就可以了,給forms添加cookieless="UseCookies"屬性即可。 

復(fù)制代碼代碼如下:


<authentication mode="Forms"> 
<forms name="MyAuth" cookieless="UseCookies" loginUrl="manager/Login.aspx" defaultUrl="manager/default.aspx" protection="All" timeout="60" /> 
</authentication> 


用以明確告訴服務(wù)器使用Cookie來保存用戶驗(yàn)證信息。問題解決!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91大神大战高跟丝袜美女 | 亚洲福利天堂网福利在线观看 | 日本高清视频在线观看 | 欧美xbxbxbxb大片 | 热99在线观看 | 国产一区精品 | 国产大乳美女挤奶视频 | 男人狂躁女人gif动态图 | 久久精品国产久精国产果冻传媒 | 女人把扒开给男人爽 | 精品久久香蕉国产线看观看亚洲 | bl双性小说 | 国产精品拍拍拍福利在线观看 | 1377大但人文艺术包子铺 | 日本国产一区二区三区 | 国产亚洲精品一区二区在线观看 | 天天色综合三 | 日本高清在线不卡 | 日产免费自线一二区 | 污污在线免费观看 | 男人的天堂在线观看视频不卡 | 男人天堂网址 | 91麻豆影视 | 色cccwww| 91尤物在线 | 国产大片线上免费观看 | 免费看男女污污完整版 | aaaa黄 | 狠狠的撞进去嗯啊h女强男视频 | 久久久无码精品亚洲欧美 | a级片在线观看免费 | 色哟哟哟在线精品观看视频 | 亚洲国产成人久久精品影视 | 热99在线观看 | 久久久久青草大香线综合精品 | 免费午夜网站 | 亚洲娇小videos | 国产精品国产色综合色 | 欧美视频在线一区 | 99久久免费精品视频 | 色综合久久夜色精品国产 |