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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Forms身份验证

發布時間:2023/12/13 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Forms身份验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.NET表單身份驗證

ASP.NET Forms 身份驗證的簡單實現:1)在Web.config文件中配置應用程序使用 Forms 身份驗證;2)創建登陸頁面,將用戶身份驗證票證添加到Cookie集合。

?????? 1.配置文件中設置為Forms驗證
?? <authentication?mode="Forms">
??????
<forms?loginUrl="NetFromwork/FormLogin.aspx"?defaultUrl="NetFromwork/FormLogin.aspx"?name=".ASPNETFORMSTEST"?protection="All"?timeout="20"?></forms>
???
</authentication>
???
<authorization>
??????
<deny?users="?"/>
???
</authorization>
?????? 2.驗證用戶合法后,將身份驗證票證寫入Cookie集合
????string?userName?=?"Jimmy";
????
//Create?ticket
????FormsAuthenticationTicket?ticket?=?new?FormsAuthenticationTicket(1,?userName,?DateTime.Now,?DateTime.Now.AddMinutes(1),?false,?"");
????
//Encrypt?the?ticket.
????String?encTicket?=?FormsAuthentication.Encrypt(ticket);
????
//Create?the?cookie.
????Response.Cookies.Add(new?HttpCookie(FormsAuthentication.FormsCookieName,?encTicket));
????
//Redirect?back?to?default?or?original?URL.
????FormsAuthentication.RedirectFromLoginPage(userName,?true);
?????? 上述代碼已經實現了簡單的Forms身份驗證功能。接下來我們看看票據信息構造函數FormsAuthenticationTicket()和用戶重定向函數RedirectFromLoginPage()原型:
函數FormsAuthenticationTicket()原型
????????//
????????
//?摘要:
????????
//?????使用?cookie?名、版本、目錄路徑、發布日期、過期日期、持久性以及用戶定義的數據初始化?System.Web.Security.FormsAuthenticationTicket
????????
//?????類的新實例。
????????
//
????????
//?參數:
????????
//???version:
????????
//?????票證的版本號。
????????
//
????????
//???name:
????????
//?????與身份驗證票關聯的用戶名。
????????
//
????????
//???userData:
????????
//?????存儲在票證中的用戶特定的數據。
????????
//
????????
//???isPersistent:
????????
//?????如果票證將存儲在持久性?Cookie(跨瀏覽器會話保存),則為?true;否則為?false。如果該票證存儲在?URL?中,將忽略此值。
????????
//
????????
//???issueDate:
????????
//?????票證發出時的本地日期和時間。
????????
//
????????
//???cookiePath:
????????
//?????票證存儲在?Cookie?中時的路徑。
????????
//
????????
//???expiration:
????????
//?????票證過期時的本地日期和時間。
????????public?FormsAuthenticationTicket(int?version,?string?name,?DateTime?issueDate,?DateTime?expiration,?bool?isPersistent,?string?userData,?string?cookiePath);
函數RedirectFromLoginPage()原型
?//
????????
//?摘要:
????????
//?????將經過身份驗證的用戶重定向回最初請求的?URL?或默認?URL。
????????
//
????????
//?參數:
????????
//???userName:
????????
//?????經過身份驗證的用戶名。
????????
//
????????
//???createPersistentCookie:
????????
//?????若要創建持久?Cookie(跨瀏覽器會話保存的?Cookie),則為?true;否則為?false。
????????public?static?void?RedirectFromLoginPage(string?userName,?bool?createPersistentCookie);

?????? 論壇常見的登陸有效期功能是怎么實現的呢?是通過設置哪些參數實現的呢?不禁有些迷茫,涉及到登陸有效期的參數有如下幾個:函構造數FormsAuthenticationTicket()中的isPersistentexpiration,函數RedirectFromLoginPage()中的createPersistentCookie,配置文件中還有timeout屬性,究竟要怎么設置才能實現“登陸一小時,一天,一個月,永久,瀏覽器進程”功能呢?

?????? 下面談談我對這些參數的理解,通過查找網上資料,MSDN和程序測試而來,有理解錯誤的地方歡迎大家指正。

???????1.關于持久Cookie,并不是說isPersistent=True或者createPersistentCookie=True時,就能夠保持永久登陸狀態,持久Cookie解釋成跨瀏覽器會話保存的Cookie更合適。當設置為True時,不同瀏覽器進程之間可以共享該Cookie,也就是說在一個IE中登陸后,在另一個IE中打開還保持登陸狀態。

?????? 2.關于函數RedirectFromLoginPage(),MSDN上解釋是這樣的“如果 CookiesSupported 屬性為 true,并且 ReturnUrl 變量位于當前應用程序中,或者 EnableCrossAppRedirects 屬性為 true,則 RedirectFromLoginPage 方法將發出身份驗證票證并使用 SetAuthCookie 方法將其置于默認 Cookie 中。”
???????可見,在執行函數RedirectFromLoginPage()時,會覆蓋掉FormsAuthenticationTicket實例的票據信息,所以第二部分代碼中,不該調用該函數,而應該用下面的代碼代替:
????string?userName?=?"Jimmy";
????
//Create?ticket
????FormsAuthenticationTicket?ticket?=?new?FormsAuthenticationTicket(1,?userName,?DateTime.Now,?DateTime.Now.AddMinutes(1),?false,?"");
????
//Encrypt?the?ticket.
????String?encTicket?=?FormsAuthentication.Encrypt(ticket);
????
//Create?the?cookie.
????Response.Cookies.Add(new?HttpCookie(FormsAuthentication.FormsCookieName,?encTicket));
????
//Redirect?back?to?default?or?original?URL.
????Response.Redirect(FormsAuthentication.GetRedirectUrl(userName,true?));? //代替RedirectFormLoginPage
?????? 3.關于登陸有效時間,涉及到登陸時間的只有構造函數FormsAuthenticationTicket()的參數expiration票據過期時間和配置文件中的timeout屬性了,這兩個有什么關系呢?----票據的有效時間是由expiration屬性決定的,而timeout只有當expiration屬性沒有顯示設置的時候才生效。 摘自:http://www.cnblogs.com/freshman0216/archive/2008/06/17/1224215.html 參考:http://www.cnblogs.com/liuqhui/archive/2008/07/20/1246987.html

轉載于:https://www.cnblogs.com/besuccess/articles/3487535.html

總結

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

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