會員登入 與 FormsAuthentication (Web.Config裡面的 )
用 Web.Config 鎖死後台管理區 需要權限的檔案,必須通過帳號、密碼才能登入(看得見)
本範例源自微軟MSDN的範例(予以簡化)
用 Web.Config 鎖死後台管理區 需要權限的檔案,必須通過帳號、密碼才能登入(看得見)
本範例源自微軟MSDN的範例(予以簡化)
這是一個很老的方法(從.NET 2.0就有了)
topcat寫的最詳細,學習ASP.NET 2.0會員機制三部曲 www.dotblogs.com.tw/topcat/archive/2009/08/03/9821.aspx
我比較單刀直入,一個可用的範例PO出來就會做了
先看執行畫面:
您要改的地方,就是下面這幾個重點。檔案 Session_Login.aspx
有心研究的朋友,微軟MSDN網站查一下,都有!
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "123" && TextBox2.Text == "123")
{ //基本上,底下這段幾乎是照抄!就能運作!
String groups = "Admin"; //群組(角色)。可以自己寫字串,也可以從資料庫裡面抓取您設定的數值。
//Create the ticket, and add the groups.登入成功後,是否用Cookie記錄?
bool isCookiePersistent = CheckBox1.Checked;
//資料來源:http://msdn.microsoft.com/zh-tw/library/System.Web.Security.FormsAuthenticationTicket(v=vs.110).aspx
//輸入參數: 使用 Cookie 名稱、版本、目錄路徑、核發日期、到期日期、永續性和使用者定義的資料
// 此 Cookie 路徑設定為在Web.Config組態檔中建立的預設值,也就是 path="/"。
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, TextBox1.Text, DateTime.Now, DateTime.Now.AddMinutes(60), isCookiePersistent, groups);
//-- 每個參數的用意 ---------------------------------------------------------------------------------------------
//-- version 類型:System.Int32 票證(ticket)的版本號碼。
//-- name 類型:System.String 與票證相關的使用者名稱。
//-- issueDate 類型:System.DateTime 核發此票證時的本機日期和時間。
//-- expiration 類型:System.DateTime 票證到期的本機日期和時間。
//-- isPersistent 類型:System.Boolean 如果票證將存放於持續性 Cookie 中 (跨瀏覽器工作階段儲存),則為 true,否則為 false。
// 如果票證是存放於 URL 中,則忽略這個值。
//-- userData 類型:System.String 要與票證一起存放的使用者特定資料。
//Encrypt the ticket. 加密,以策安全!
String encryptedTicket = FormsAuthentication.Encrypt(authTicket);
//底下的就是寫Cookie而已,請看 上集 第十六章「狀態管理」
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
if (true == isCookiePersistent)
authCookie.Expires = authTicket.Expiration; // cookie過期日
//Add the cookie to the outgoing cookies collection.
Response.Cookies.Add(authCookie);
//通過身份驗證的人,才能看見原本的網頁,例如Hello.aspx。
//通過驗證後,自動回到(導向)原本想看的網頁。
Response.Redirect(FormsAuthentication.GetRedirectUrl(TextBox1.Text, false));
}
else {
Response.Write("
登入失敗(帳號或密碼錯誤)
");
}
}
註解: 程式中用到的 FormsAuthentication ,請看
................................................................................................................................................
Web.Config檔案裡面需要一些設定:
也因為 Web.Config檔鎖定了所有檔案,只要您想直接開啟(觀看)網頁,就會「被導向」登入畫面 ( 檔案 Session_Login.aspx )
帳號、密碼都正確後,才能看到這些「後台管理區」的網頁。
這樣的功能,您可以用本文範例來做(用 Web.Config 鎖死這些需要權限的檔案)
也可以自己寫,其實不會太困難喔,如下圖。
範例下載 -- https://onedrive.live.com/?id=6F7F668080F24B20%21115&cid=6F7F668080F24B20
檔名:WebSite3_Easy_Login_FormsAuthentication.rar (C#)WebSite3_Easy_Login_FormsAuthentication_VB.rar (VB)
動手先玩一下,知道他運作的流程。
然後再來審閱程式裡面的邏輯、參數的用法。
這個範例是從微軟MSDN範例裡面,簡化而來。特此感謝。
如果您要下載上面這個 Windows AD來作會員登入 範例,可以參閱我以前的文章:
ASP.NET透過AD進行驗證 #4 -- 會員登入、會員專屬網頁 / Login AD Account
相關範例可以參考 topcat撰寫的 -- [範例]ASP.NET使用Session驗證練習範例
沒有留言:
張貼留言