日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# ASP.NET Forms身份认证

發布時間:2024/9/21 C# 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# ASP.NET Forms身份认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:https://www.cnblogs.com/kyo-lynn/p/3418577.html

原文:https://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html

?

注意1:

  1、需要在web.config中添加節點,

  2、需要引用命名空間:System.Web.Security

?

?注意2:

?注意 票據時間 和 cookie時間
?比如:
  cookie時間為5秒,票據時間為5秒,用戶在5秒內刷新,登錄時間會一直延續下去,如果超過5秒,登錄狀態消失
  cookie時間為5秒,票據時間為5000秒,只要登錄時間超過5秒,不管用戶是否刷新頁面,登錄狀態消失

?

?

1、需要在Web.config中添加節點,添加在system.web下。

<authentication mode="Forms"></authentication>

?

//獲取認證信息public ActionResult Index(){if (Request.IsAuthenticated){//獲取認證信息//Request.Cookies[FormsAuthentication.FormsCookieName] != null//Request.IsAuthenticatedstring user = User.Identity.Name;//Request.RequestContext.HttpContext.User.Identity.Namevar cookie = Request.Cookies[FormsAuthentication.FormsCookieName];var ticket = FormsAuthentication.Decrypt(cookie.Value);string data = ticket.UserData;return Content($"用戶已登錄 <br> user:{user} <br> data:{data}");}return Content("用戶未登錄");}

?

//登錄1public ActionResult Login1(){FormsAuthentication.SetAuthCookie("name2", true);return Content("登錄成功,name: name2");}//登錄2public ActionResult Login2(){/*判斷是否登錄的唯一標志,就是 看看 有沒有名稱為FormsAuthentication.FormsCookieName的cookie,有就是登錄了。按照asp.net forms驗證的設計思想,如果要將自定義數據放到Cookie里面,首先應該定制一個FormsAuthenticationTicket,將自定義數據放到其UserData里,然后用FormsAuthentication.Encrypt加密這個Ticket,最后用new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)生成一個Cookie,加入到Response.Cookies中, 作為登錄標注。并不是直接修改 HttpCookie的Value或者Values。 *///創建認證信息 TicketFormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "name1", DateTime.Now, DateTime.Now.AddSeconds(5), false, "value1");//票據加密string encryptedTicket = FormsAuthentication.Encrypt(ticket);//寫入到cookievar cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);System.Web.HttpContext.Current.Response.SetCookie(cookie);return Content($"cookie <br> name:{cookie.Name} <br> value:{cookie.Value}");}

?

//退出public ActionResult Logout(){FormsAuthentication.SignOut();return Content("退出成功");}

?

?

?

?

測試1:用戶在5秒內刷新頁面,登錄狀態會一直持續下去

?

?測試2:不管用戶怎么刷新,超過5秒后,就會退出登錄狀態

?

測試3:用戶在5秒內刷新頁面,登錄狀態會一直持續下去。超過3秒刷新,用戶登錄狀態消失

?

測試1 和 測試3 的區別:

  測試1:票據時間 和 cookie時間 都為5秒

  測試3:票據時間為3秒,cookie時間為5秒

  結論:測試3,就算用戶在4秒的時候刷新頁面,但那個時間用戶從游覽器提交的票據,在后臺判斷是已經失效的,因為票據的過期時間為3秒。

?

測試1 和 測試2 的區別:

  測試1:票據時間 和 cookie時間 都為5秒

  測試2:票據時間為5000秒,cookie時間為5秒

  結論:測試2,用戶在5秒內刷新頁面,游覽器有帶cookie往服務端請求。

     如果時間超過5秒,游覽器請求的時候,就不帶cookie。

     這個時候,雖然票據沒有過期,但是與票據關聯的cookie(應該是票據本身)根本就沒有被提交到服務端,

     所以還是為未登陸狀態。

?

過期時間分為兩塊:

  1、cookie的過期時間

    cookie的過期時間 決定了 游覽器是否會把票據(票據本身就是存在cookie里面的)提交到后臺

  2、票據的過期時間

    后臺判斷過期時間的依據,這個才是實實在在的過期時間。

    如果票據過期了,就算偽造cookie上傳票據,也沒法通過后臺的驗證。

?

記錄一下一些自己的理解

?

轉載于:https://www.cnblogs.com/guxingy/p/10643785.html

總結

以上是生活随笔為你收集整理的C# ASP.NET Forms身份认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。