您都不曉得是咋回事的啊!!!
在使用 Login 控件時,還有一點需要聲明的就是,
本身對使用者的驗證這些操作而言,
并不是由 Login 控件完成的,而是在其背後有 Membership 和 Role 支援,
Login 控件所做的可以這麼說,隻是一個 UI ,然後接受使用者名,密碼等參數,
然後将這些參數傳遞給 Membership 和 Role 這些類來做處理,
是以,正在起作用的是 Membership 和 Role , 而不是 Login 控件本身。
接下來就對 Login 控件的屬性和事件做一個介紹吧,
屬性的話,
DistinationPageUrl---------指定當使用者登入成功後會跳轉到的頁面
FailureAction---------------指定當登入失敗時,要發生的動作,
有 Refresh 和 RedirectToLoginPage 兩個選項
還有諸多的屬性是在屬性視窗中直接看不到的,
您可以使用 MSDN 檢視或者直接調用其代碼定義視窗,
再看幾個主要的事件吧
Authenticate--------自定義的驗證,不适用預設的 Membership 和 Role 來實作驗證,
而是自己編寫 ADO.NET 代碼實作驗證
LoggingIn-----------使用者按下登入按鈕時的操作(此時還沒有執行驗證)
LoggedIn------------使用者按下登入按鈕後執行驗證且通過後觸發
LogginError----------在驗證過程中出現錯誤時引發事件
再對上面的一些屬性進行解釋:
首先是 DistinationPageUrl ,如果這個屬性沒有設定的話,
那麼使用 Login 成功登入後,
會自動跳轉到在 web.config 中定義的 defaultUrl
而如果您已經定義了 DistinationPageUrl 的話,
那麼在登入成功後,便會跳轉到由這個 DistinationPageUrl 所定義的頁面上,
而不會跳轉到 web.config 中定義的 defaultUrl 指定的頁面上了。
還有就是對于 Login 控件,您可以把它轉換為模闆,
這樣的話,您便可以充分的自定義 Login 的使用者界面了,
接下來就看一個使用了 Login 的 Demo 了
首先是我定義了三個頁面
一個是 Login.aspx
一個是 Main.aspx
一個是 Demo__2.aspx
然後再看一下 web.config 中的一些配置吧,
從配置中可以看出,我設定了 loginUrl 屬性,
這個屬性的作用就是當使用者沒有通過驗證時,
使用 FormsAuthentication.RedirectToLoginPage(); 将要跳轉到的頁面,
而後我又定義了 defaultUrl ,在上面也解釋了這個屬性的使用,也
就是當使用者通過驗證且沒有設定 DestinationPageUrl 時将要跳轉到的頁面,
而後就是 path 屬性了,path=”/” 代表使用本地 localhost ,
其實在這個 forms 标記中還有很多很重要的屬性,不過大家根據命名也可以猜出個大概了,
然後呢,我就通過在 Login.aspx 中添加一個 Login 控件,并且将其轉換為模闆,
設定一下外觀屬性,
便可以得到下面的這個界面了
再看一下 Main.aspx 的 Code-Behind 和 Demo__2.aspx 的 Code-Behind,
(兩個的 Code-Behind 是一樣的)
接下來就看示範了,
首先,我先浏覽 Demo__2.aspx 頁面,可以發現其會自動跳轉到 Login.aspx 頁面上,
(這是因為在 web.config 中設定的 loginUrl 起了作用)
然後我便完成登入,登入成功後,其又會自動跳轉到 Demo__2.aspx 頁面上,
然後就是我直接使用 Login.aspx 頁面了,我一開始就浏覽 Login.aspx 頁面,
登入成功後,其又會自動跳轉到 Main.aspx 中,
(這是 DestinationPageUrl 屬性起了作用)
以上隻是簡單的對 Login 控件有了一個簡單的介紹,
不過對于其中的一些需要注意的地方,比如 web.config 中的設定,
還是要引起注意的,
其實, Login 控件的功能還遠不止這些,感興趣的可以好好的去研究一下了。