<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        asp.net mvc中Forms身份驗證身份驗證流程

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

        asp.net mvc中Forms身份驗證身份驗證流程

        asp.net mvc中Forms身份驗證身份驗證流程:驗證流程 一、用戶登錄 1、驗證表單:ModelState.IsValid 2、驗證用戶名和密碼:通過查詢數據庫驗證 3、如果用戶名和密碼正確,則在客戶端保存Cookie以保存用戶登錄狀態:SetAuthCookie 1):從數據庫中查出用戶名和一些必要的信息,并把額外信息保存到Use
        推薦度:
        導讀asp.net mvc中Forms身份驗證身份驗證流程:驗證流程 一、用戶登錄 1、驗證表單:ModelState.IsValid 2、驗證用戶名和密碼:通過查詢數據庫驗證 3、如果用戶名和密碼正確,則在客戶端保存Cookie以保存用戶登錄狀態:SetAuthCookie 1):從數據庫中查出用戶名和一些必要的信息,并把額外信息保存到Use

        驗證流程

        一、用戶登錄

        1、驗證表單:ModelState.IsValid
        2、驗證用戶名和密碼:通過查詢數據庫驗證
        3、如果用戶名和密碼正確,則在客戶端保存Cookie以保存用戶登錄狀態:SetAuthCookie
            1):從數據庫中查出用戶名和一些必要的信息,并把額外信息保存到UserData中
         2):把用戶名和UserData保存到 FormsAuthenticationTicket 票據中
         3):對票據進行加密 Encrypt
         4):將加密后的票據保存到Cookie發送到客戶端
        4、跳轉到登錄前的頁面
        5、如果登錄失敗,返回當前視圖

        二、驗證登錄

        1、在Global中注冊PostAuthenticateRequest事件函數,用于解析客戶端發過來的Cookie數據
         1):通過 HttpContext.Current.User.Identity 判斷用戶是否登錄(FormsIdentity,IsAuthenticated,AuthenticationType)
         2):從HttpContext 的Request的Cookie中解析出Value,解密得到 FormsAuthenticationTicket 得到UserData
        2、角色驗證
         1):在Action加入 Authorize特性,可以進行角色驗證
         2):在 HttpContext.Current.User 的 IsInRole 方法進行角色認證(需要重寫)

        一、用戶登錄

        1、設置web.config

        設置重定向登錄頁面

        <system.web>
        <authentication mode="Forms">
         <forms name="loginName" loginUrl="/UserInfo/login" cookieless="UseCookies" path="/" protection="All" timeout="30"></forms>
        </authentication>
        </system.web>

        注釋掉

        <modules>
         <!--<remove name="FormsAuthentication" />-->
        </modules>

        2、登陸的驗證中控制器

        控制器中加“[Authorize]”修飾的方法拒絕匿名。

         public class UserInfoController : Controller //控制器
         {
         //身份驗證過濾器
         [Authorize]
         public ActionResult Index()
         {
         return View();
         }
         }
        

        控制器中登錄

         /// <summary>
         /// 用戶登錄
         /// </summary>
         /// <returns></returns>
         public ActionResult login()
         {
         return View();
         } 
         [HttpPost]
         public ActionResult login(loginModels login) {
         if (ModelState.IsValid)
         {
         var model = db.Admininfo.FirstOrDefault(a => a.AdminAccount == login.AdminAccount && a.AdminPwd == login.AdminPwd);
         if (model != null)
         {
         //存入票據(用戶登錄的時候去存信息,如果有信息直接去登錄)
         var dtoModel = new Users
         {
         id = model.id,
         AdminPwd = model.AdminPwd,
         AdminAccount=model.AdminAccount
         };
         //調用
         SetAuthCookie(dtoModel);
         //獲取登錄地址
         var returnUrl = Request["ReturnUrl"];
         //判斷登錄地址是不是空值
         if (!string.IsNullOrWhiteSpace(returnUrl))
         { 
         return Redirect(returnUrl);
         }
         else
         {
         //return RedirectiToAction
         return Redirect("/Home/index");
         }
        
         }
         else
         {
         ModelState.AddModelError("", "賬號密碼不對");
         return View(login);
         }
         }
         else
         {
         ModelState.AddModelError("", "輸入的信息有誤");
         return View(login);
        
         }
        
        

        對登錄賬號進行cookie

         /// <summary>
         /// 對登錄賬號進行cookie
         /// </summary>
         /// <param name="model"></param>
         public void SetAuthCookie(Users loginModel) {
         //1、將對象轉換成json
         var userdata = loginModel.ToJson();
         //2、創建票據FormsAuthenticationTicket
         FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2,"loginUser",DateTime.Now,DateTime.Now.AddDays(1), false, userdata);
         //對票據進行加密 
         var tickeEncrypt = FormsAuthentication.Encrypt(ticket);
         //創建Cookie,定義
         HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, tickeEncrypt);
         cookie.HttpOnly = true;
         cookie.Secure = FormsAuthentication.RequireSSL;
         cookie.Domain = FormsAuthentication.CookieDomain;
         cookie.Path = FormsAuthentication.FormsCookiePath;
         cookie.Expires = DateTime.Now.Add(FormsAuthentication.Timeout);
         //先移除cookie,在添加cookie
         Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
         Response.Cookies.Add(cookie);
         } 
        

        3、Models中添加模型文件

         public class loginModels
         {
         /// <summary>
         /// 賬號
         /// </summary>
         [DisplayName("賬號")]
         [Required(ErrorMessage = "賬號不能為空")] 
         public string AdminAccount { get; set; }
         /// <summary>
         /// 密碼
         /// </summary>
         [DisplayName("密碼")]
         [Required(ErrorMessage = "密碼不能為空")]
         public string AdminPwd { get; set; }
         }
        
        

        4、Views中 Login 代碼:

        代碼如下:
        @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))

        5、Global設置

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
         {
         //1、通過sender獲取http請求
         // HttpApplication app = new HttpApplication();//實例化
         HttpApplication app = sender as HttpApplication;
         //2、拿到http上下文
         HttpContext context = app.Context;
         //3、根據FormsAuthe,來獲取cookie
         var cookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
         if (cookie != null)
         {
         //獲取cookie的值
         var ticket = FormsAuthentication.Decrypt(cookie.Value);
         if (!string.IsNullOrWhiteSpace(ticket.UserData))
         {
         //把一個字符串類別變成實體模型
         var model = ticket.UserData.ToObject<AdmininfoViewModel>();
         //var acount = model.AdminAccount; //獲取賬號
         context.User = new MyFormsPrincipal<AdmininfoViewModel>(ticket, model);
         //MyFormsPrincipal.Identity = new FormsIdentity(ticket);
         // MyFormsPrincipal.userdata;
        
         }
         }
         }
        
        

        6、退出登錄

        控制器中

         /// <summary>
         /// 退出登錄
         /// </summary>
         public ActionResult loginout()
         {
         //刪除票據
         FormsAuthentication.SignOut();
         //清除cookie
         Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddDays(-1);
         Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
         return RedirectToAction("Index", "Home");
         
         }
        

        View跳轉鏈接

        @Html.ActionLink("安全退出","loginout","Users")

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

        文檔

        asp.net mvc中Forms身份驗證身份驗證流程

        asp.net mvc中Forms身份驗證身份驗證流程:驗證流程 一、用戶登錄 1、驗證表單:ModelState.IsValid 2、驗證用戶名和密碼:通過查詢數據庫驗證 3、如果用戶名和密碼正確,則在客戶端保存Cookie以保存用戶登錄狀態:SetAuthCookie 1):從數據庫中查出用戶名和一些必要的信息,并把額外信息保存到Use
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品第一国产综合精品99 | 日本免费v片一二三区| 亚洲精品在线免费观看视频| 国产精品免费福利久久| 亚洲AV无码一区二区二三区软件 | 久久久久久国产精品免费无码| 亚洲精品高清无码视频| 免费福利电影在线观看| 亚洲av鲁丝一区二区三区| 99久久精品国产免费| 亚洲成a人片7777| 成在人线AV无码免费| 亚洲AV网一区二区三区 | 在线看片免费人成视频播| 亚洲精品无码成人片在线观看| 一个人看的免费高清视频日本| 亚洲天堂中文字幕在线| 免费无码又爽又刺激一高潮| 亚洲黄色在线视频| 青苹果乐园免费高清在线| 亚洲AV无码专区国产乱码不卡| 亚洲精品一级无码鲁丝片| 黄色网站软件app在线观看免费| 亚洲人成电影福利在线播放| 4虎永免费最新永久免费地址| 亚洲精品人成网线在线播放va | 一区二区三区AV高清免费波多| 国产亚洲人成网站观看| 亚洲成人免费在线观看| 亚洲av无码一区二区三区人妖| 国产a级特黄的片子视频免费 | 最近免费中文在线视频| 无码色偷偷亚洲国内自拍| 日韩亚洲变态另类中文| 亚州免费一级毛片| 男女作爱免费网站| 久久久久亚洲AV无码观看| 日本免费v片一二三区| 国产免费无码一区二区| 亚洲欧洲日产国码久在线| 亚洲精品乱码久久久久久久久久久久|