會員登入 與 FormsAuthentication (Web.Config裡面的 authentication mode="Forms")
用 Web.Config 鎖死後台管理區 需要權限的檔案,必須通過帳號、密碼才能登入(看得見)
本範例源自微軟MSDN的範例(予以簡化)
這是一個很老的方法(從.NET 2.0就有了)
我比較單刀直入,一個可用的範例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;
//輸入參數: 使用 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("<h3>登入失敗(帳號或密碼錯誤)</h3>");
}
}
註解: 程式中用到的 FormsAuthentication ,請看
http://msdn.microsoft.com/zh-tw/library/system.web.security.formsauthentication(v=vs.110).aspx
................................................................................................................................................
Web.Config檔案裡面需要一些設定:
也因為 Web.Config檔鎖定了所有檔案,只要您想直接開啟(觀看)網頁,就會「被導向」登入畫面 ( 檔案 Session_Login.aspx )
帳號、密碼都正確後,才能看到這些「後台管理區」的網頁。
這樣的功能,您可以用本文範例來做(用 Web.Config 鎖死這些需要權限的檔案)
也可以自己寫,其實不會太困難喔
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<!-- ***** 自己添加的 (start) ************************************************************** -->
<authentication mode="Forms">
<forms loginUrl="Session_Login.aspx"
defaultUrl="Default.aspx" name="XYZAuthCookie" timeout="10" path="/">
</forms>
</authentication>
<authorization> 註解:Web.Config就是用紅色這一段來進行鎖定(後台管理區的所有管制網頁)!
<deny users="?"/>
<allow users="*"/>
</authorization>
<!-- ***** 自己添加的 (end) ************************************************************** -->
</system.web>
範例下載 -- https://onedrive.live.com/?id=6F7F668080F24B20%21115&cid=6F7F668080F24B20
檔名:WebSite3_Easy_Login_FormsAuthentication.rar (C#)
WebSite3_Easy_Login_FormsAuthentication_VB.rar (VB)
動手先玩一下,知道他運作的流程。
然後再來審閱程式裡面的邏輯、參數的用法。
這個範例是從微軟MSDN範例裡面,簡化而來。特此感謝。
來自 ASP .NET 的 Active Directory 網域服務驗證 msdn.microsoft.com/zh-tw/library/ms180890.aspx
如果您要下載上面這個 Windows AD來作會員登入 範例,可以參閱我以前的文章:
相關範例可以參考 topcat撰寫的 -- [範例]ASP.NET使用Session驗證練習範例
留言列表