老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

asp.netmvc中如何實現Forms身份驗證身份驗證流程-創新互聯

這篇文章主要介紹了asp.net mvc中如何實現Forms身份驗證身份驗證流程,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創新互聯公司是一家專業從事成都網站建設、做網站、網頁設計的品牌網絡公司。如今是成都地區具影響力的網站設計公司,作為專業的成都網站建設公司,創新互聯公司依托強大的技術實力、以及多年的網站運營經驗,為您提供專業的成都網站建設、營銷型網站建設及網站設計開發服務!

驗證流程

一、用戶登錄

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

設置重定向登錄頁面



  

注釋掉


  

2、登陸的驗證中控制器

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

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

控制器中登錄

   /// 
  /// 用戶登錄
  /// 
  /// 
  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

  /// 
  /// 對登錄賬號進行cookie
  /// 
  /// 
  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
 {
  /// 
  /// 賬號
  /// 
  [DisplayName("賬號")]
  [Required(ErrorMessage = "賬號不能為空")] 
  public string AdminAccount { get; set; }
  /// 
  /// 密碼
  /// 
  [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();
     //var acount = model.AdminAccount; //獲取賬號
     context.User = new MyFormsPrincipal(ticket, model);
     //MyFormsPrincipal.Identity = new FormsIdentity(ticket);
     // MyFormsPrincipal.userdata;

    }
   }
  }

6、退出登錄

控制器中

  /// 
  /// 退出登錄
  /// 
  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")

感謝你能夠認真閱讀完這篇文章,希望小編分享asp.net mvc中如何實現Forms身份驗證身份驗證流程內容對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,遇到問題就找創新互聯,詳細的解決方法等著你來學習!


網站題目:asp.netmvc中如何實現Forms身份驗證身份驗證流程-創新互聯
文章地址:http://www.xueling.net.cn/article/dghiie.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 国产无码一区二区精品 | 欧美不卡高清一区二区三区 | 亚洲国产精品人人爽夜夜爽 | 久久久久亚洲Aⅴ无码 | 成人亚洲一区二区三区 | 97久久精品无码一区二区欧美人 | 亚洲久草av | 久久一区二区三 | 日日摸处处碰夜夜爽 | 久久久国产乱子伦精品作者 | 国产视频日韩精品 | 日产特黄极日产 | 午夜精品成人 | 老色鬼在线播放精品视频 | 97理论三级九七午夜在线观看 | 国产精品久久人妻无码免费看 | 亚洲高清国产拍精品青青草原 | 波多野结衣无码视频在线观看 | 动漫AV永久无码精品每日更新 | 无码专区—va亚洲v天堂麻豆 | 天堂中文最新版在线官网在线 | 一级aaaa毛片 | 粉嫩av淫片一区二区三区 | 亚洲国产aⅴ精品 | 粉嫩一区二区三区在线看 | av网站免费在线观看 | 亚洲精品.www | 不卡在线观看亚洲视频 | 性淫视频 | 九九热线精品视频98 | 性爱在线免费视频 | 国产超aⅤ男人的天堂 | 亚洲精品无码久久久久久久 | 亚洲激情四射视频中文字幕久久 | 国产A∨天天免费观看美女 在线免费观看视频黄 | 亚洲人影院 | 久久久久国精品产熟女久色 | 69式精品视频免费观看 | 国产高清在线一区二区 | 久久久国产精品视频 | 91综合中文字幕乱偷在线 |