<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:39:01
        文檔

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

        Forms身份認證在IE11下無法保存Cookie的問題:ASP.NET中使用Forms身份認證常見的做法如下: 1. 網站根目錄下的Web.config添加authentication節點 代碼如下:<authentication mode=Forms> <forms name=MyAuth loginUrl=manager/Login.aspx de
        推薦度:
        導讀Forms身份認證在IE11下無法保存Cookie的問題:ASP.NET中使用Forms身份認證常見的做法如下: 1. 網站根目錄下的Web.config添加authentication節點 代碼如下:<authentication mode=Forms> <forms name=MyAuth loginUrl=manager/Login.aspx de

        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來保存用戶驗證信息。問題解決!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        Forms身份認證在IE11下無法保存Cookie的問題:ASP.NET中使用Forms身份認證常見的做法如下: 1. 網站根目錄下的Web.config添加authentication節點 代碼如下:<authentication mode=Forms> <forms name=MyAuth loginUrl=manager/Login.aspx de
        推薦度:
        標簽: 保存 cookie 問題
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 最近中文字幕电影大全免费版 | 美女内射毛片在线看免费人动物| 亚洲国产成人五月综合网| 亚洲av日韩综合一区二区三区| 在线观看视频免费国语| 亚洲成av人片在线天堂无| 国产极品粉嫩泬免费观看 | 亚洲AV无码一区二区一二区| 午夜视频免费成人| 国产午夜亚洲精品不卡电影| 五月婷婷亚洲综合| 亚洲精品国产日韩无码AV永久免费网| 亚洲香蕉网久久综合影视| 你懂得的在线观看免费视频| 亚洲国产老鸭窝一区二区三区| 亚洲精品视频在线观看免费| 亚洲日本一线产区和二线产区对比| 国产大片91精品免费观看男同| v片免费在线观看| 亚洲精品无码不卡| 免费视频专区一国产盗摄| 欧美激情综合亚洲一二区| 狠狠色婷婷狠狠狠亚洲综合| 久久免费精品视频| 亚洲资源最新版在线观看| 国产成人免费a在线视频app| 91在线视频免费观看| 亚洲精品免费在线视频| 成人免费在线视频| 中文字幕乱码系列免费| 亚洲毛片免费观看| 亚洲国产一区二区三区| 99久久国产免费中文无字幕| 色九月亚洲综合网| 久久亚洲国产视频| 免费网站看v片在线香蕉| 国产午夜成人免费看片无遮挡| 亚洲最大无码中文字幕| 亚洲精品少妇30p| 国产精品色午夜视频免费看| 久久er国产精品免费观看2|