以往我們在設計會員機制時,最常出錯的就是網頁權限的設計,網站中某些功能,例如購物車,是可以免會員登入的,但是查詢訂單的時候就需要會員,「購物車」「訂單查詢」這二個網頁需要不同權限,因些二頁在login事件中的設計就不同,而且撰寫程式碼很麻煩…另外登入後要導入哪一頁,登出後導出哪一頁,這也是個課題,以下利用Visual Studio中login類裡頭的二個控制項LoginName、LoginStatus可以輕鬆的做出。
歡迎訊息的設計:
如果使用者登入成功的話顯示歡迎的訊息,我們利用LoginName來控制項設計,LoginName的屬性中有一項FormatString可以自訂字串的連接,{0}即是使用者名稱,可以自已加入要連結的字串,如範例我們把FormatString設成「 歡迎,{0}!!! 」
如果要在後置程式碼使用,可以寫成Page.User.Identity.Name.ToString,如範例Profile.aspx裡,加了一個label控制項,並撰寫了下面的程式碼
Me.Label1.Text = "非常感謝您的使用," & Me.Page.User.Identity.Name.ToString & "先生/小姐,以下是您的個人訊息設定:"
登出、登入機制的設定:
利用LoginStatus控制項來設計,以下有幾個重要屬性
- LogoutAction屬性:登入後執行的動作,dnowba比較常用 [RedirectToLoginPage] 這個選項,如此使用者無法直接輸入網址強制觀看網頁,因為一定要通過認證後才會看到這個網頁。
- LogoutPageUrl屬性:登出後重導到哪一頁,LogoutAction屬性要設成[Redirect]才會發揮作用。
而LogoutAction屬性若設定成[RedirectToLoginPage]意即畫面重導到登入的畫面,預設的登入網頁是根目錄下的login.aspx,當然我們也可以在web.config裡頭自行修改目錄位置。統一設定在web.config的好處就是萬一重新設計了一個login的頁面,檔案名稱又換了,那麼不用逐一修改每個網頁,只要在CONFIG裡修改就可以了。
<system.web> <authentication mode="Forms" > <forms loginUrl="~/login.aspx"></forms> </authentication> </system.web>
網頁檢驗是否登入成功
若是網站裡某些網頁需要認證後才可使用/觀看,可以在Page Load事件裡頭寫入以下程式碼
If Me.User.Identity.IsAuthenticated = False Then FormsAuthentication.RedirectToLoginPage() End If
沒有留言:
張貼留言