亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:32:41
字體:
來源:轉載
供稿:網友

驗證流程

一、用戶登錄

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")

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情视频免费观看| 蜜臀久久99精品久久久无需会员| 日韩欧美国产一区二区| 神马久久桃色视频| 久久久亚洲影院你懂的| 亚洲香蕉成视频在线观看| 日韩在线视频免费观看高清中文| 欧美日韩一区二区免费视频| 久久久久久久久国产精品| 亚洲人永久免费| 国产成人久久精品| 国产国语刺激对白av不卡| 国产成人精品一区| 亚洲欧美另类中文字幕| 国产91色在线免费| www.日韩欧美| 欧美中文在线字幕| 日本精品视频在线播放| 欧美电影在线观看完整版| 日韩av在线资源| 奇门遁甲1982国语版免费观看高清| 国产亚洲精品成人av久久ww| 国产精品色婷婷视频| 亚洲国产三级网| 中文字幕日本精品| 亚洲性生活视频| 亚洲大胆人体视频| 欧美亚洲日本黄色| 最新国产成人av网站网址麻豆| www.欧美精品一二三区| 韩国三级电影久久久久久| 日韩免费在线观看视频| 在线日韩第一页| 亚洲欧美综合图区| 亚洲国产精品va在线看黑人动漫| 国产精品看片资源| 国产一区深夜福利| 亚洲区bt下载| 91黑丝高跟在线| 日韩免费在线视频| 欧洲中文字幕国产精品| 久久久久久久影视| 精品国产福利在线| 久热精品视频在线免费观看| 久久99青青精品免费观看| 国自产精品手机在线观看视频| 亚洲性视频网站| 免费av在线一区| 国内精品小视频| 美日韩丰满少妇在线观看| 亚洲一区二区三区成人在线视频精品| 日韩欧美亚洲一二三区| 欧美亚洲一区在线| 国产精品高潮呻吟久久av野狼| 欧美疯狂性受xxxxx另类| 国产精品电影在线观看| 久久免费少妇高潮久久精品99| 国产一区二区三区三区在线观看| 久久久久久久91| 亚洲欧洲在线免费| 国产日本欧美一区二区三区在线| 亚洲国产免费av| 麻豆国产精品va在线观看不卡| 久久久之久亚州精品露出| 亚洲女人天堂网| 国产精品美女在线观看| 国产精品成av人在线视午夜片| 日韩av免费看网站| 欧美日韩激情美女| 欧美日韩日本国产| 91精品在线看| 丰满岳妇乱一区二区三区| 国产精品亚洲аv天堂网| 国产一区二区三区精品久久久| 在线性视频日韩欧美| 精品一区精品二区| 日韩欧美黄色动漫| 亚洲国产欧美一区| 久久久国产精品一区| 久久影院模特热| 国产亚洲精品美女久久久| 久久国产精品电影| 欧美日韩电影在线观看| 最近2019中文字幕mv免费看| 欧美丰满少妇xxxx| 国产精品成人在线| 亚洲欧洲视频在线| 久久免费视频在线观看| 日韩美女视频中文字幕| 最近2019中文字幕mv免费看| 久久久www成人免费精品| 欧美中文在线观看国产| 精品久久久香蕉免费精品视频| 精品欧美一区二区三区| 欧美制服第一页| 成人黄色大片在线免费观看| 97av在线视频| 亚洲欧洲第一视频| 欧美日本国产在线| 久久久久久久一区二区三区| 欧美精品激情视频| 国产亚洲欧洲高清一区| 日韩在线观看高清| 亚洲欧美激情四射在线日| 亚洲一区二区在线| 国产一区二区三区在线观看视频| 日韩av在线导航| 成人午夜激情网| 成人美女免费网站视频| 国产91色在线播放| 国产成人精品综合久久久| 高跟丝袜欧美一区| 中文字幕亚洲欧美一区二区三区| 欧美激情亚洲自拍| 日韩国产高清视频在线| 国产精品自拍网| 欧美日韩精品在线视频| 欧美午夜激情小视频| 日韩电影第一页| 国产成人亚洲综合| 2019亚洲日韩新视频| 亚洲欧美色图片| 亚洲精品一区二区久| 国产精品一区二区三| 欧美日韩国产一区二区三区| 精品国产999| 国产精品99久久久久久www| 欧美大片免费观看在线观看网站推荐| 国产亚洲精品va在线观看| 国产精品入口免费视| 精品国内产的精品视频在线观看| 亚洲欧美制服第一页| 欧美日韩激情网| 中文字幕亚洲欧美日韩2019| 久久影视电视剧免费网站清宫辞电视| 成人性生交大片免费看视频直播| 国产女精品视频网站免费| 国产精品久久久久久久久免费看| 亚洲女人被黑人巨大进入| 亚洲激情视频在线观看| 亚洲最大中文字幕| 国产亚洲精品一区二555| 国产在线观看91精品一区| 奇米成人av国产一区二区三区| 久久69精品久久久久久久电影好| 国产一区二区三区在线观看网站| 在线观看91久久久久久| 亚洲一区二区中文| 中文字幕一区日韩电影| 国产精品一区专区欧美日韩| 亚洲高清一二三区| 夜色77av精品影院| 亚洲性视频网址| 欧美精品一区三区| 伊人伊成久久人综合网小说| 欧美激情国产日韩精品一区18| 日韩美女福利视频| 国产精品27p| 亚洲最大成人在线| 国产精品久久久久久久一区探花| 欧美视频中文字幕在线| 国产精品免费电影| 亚洲一区二区三区乱码aⅴ| 成人黄色免费在线观看|