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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

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

Forms身份認證在IE11下無法保存Cookie的問題

2019-12-03 12:06ASP.NET教程網 ASP.NET教程

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

ASP.NET中使用Forms身份認證常見的做法如下: 

1. 網站根目錄下的Web.config添加authentication節點 

復制代碼代碼如下:


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


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

復制代碼代碼如下:


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


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

3. 添加認證代碼。登錄按鈕中添加下面的代碼: 

復制代碼代碼如下:


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

snCheckCode.Create(); 
Utility.ShowMessage("校驗碼錯誤!"); 
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("抱歉,該賬號被禁止登錄!"); 
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加密代碼: 

復制代碼代碼如下:


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(); 


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

復制代碼代碼如下:


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中運行一切正常!但是將網站發布到服務器的IIS (可能會是較低版本的IIS,如IIS 6)后,發現登錄功能異常。輸入用戶名和密碼后點擊登錄按鈕,頁面postback但并不能正確跳轉,嘗試手動訪問受保護的頁面會被自動跳轉回登錄頁面。更奇怪的是該問題只出現在IE11瀏覽器上,嘗試用Firefox或Chrome訪問登錄功能運行正常。初步懷疑是IIS設置的問題,可是IIS 6上并沒有與Cookie相關的設置,好像記得IIS 7上倒是有這個設置。但因為只有IE 11存在該問題,所以可以否定代碼本身存在任何問題。 

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

復制代碼代碼如下:


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


用以明確告訴服務器使用Cookie來保存用戶驗證信息。問題解決!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: h日本漫画全彩在线观看 | 欧美四级无删版影片 | 国产午夜精品不卡视频 | 国产精自产拍久久久久久 | 风间由美在线 | porno日本大学生高清 | 日本高清在线看 | 国产精品久久久精品日日 | 日本强不卡在线观看 | 草莓视频幸福宝 | 百合女女师生play黄肉黄 | 天美传媒tm0087 | 国产伦久视频免费观看视频 | 免费在线观看中文字幕 | 性xxxxbbbbxxxx中国| 国产日韩精品一区二区 | 2012中文字幕中字视频 | 99久久免费国内精品 | 国产色司机在线视频免费观看 | 欧美成人另类人妖 | 欧美人妖大啪啪 | 黄网国产| 国产在视频线在精品 | 欧美专区在线视频 | 成人在线播放 | 亚洲黄网站wwwwww | 欧美日韩导航 | 欧美高清日韩 | 九九99热久久999精品 | 秋霞午夜伦午夜高清福利片 | 好男人资源免费观看 | 欧美日韩亚洲另类人人澡 | 欧美日韩一区二区三区韩大 | 亚洲无限观看 | 日韩去日本高清在线 | 成人在线视频在线观看 | 99ri在线精品视频在线播放 | 亚洲国产天堂久久综合网站 | 高清在线观看免费入口 | 白丝萝莉喷水 | 精品欧美一区二区三区在线观看 |