會員登入 與 FormsAuthentication (Web.Config裡面的 authentication mode="Forms") 

用 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;
 
            //輸入參數: 使用 Cookie 名稱、版本、目錄路徑、核發日期、到期日期、永續性和使用者定義的資料
            // 此 Cookie 路徑設定為在Web.Config組態檔中建立的預設值,也就是  path="/"。
            FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, TextBox1.TextDateTime.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) ************************************************************** -->
      <!-- 設定說明,請看  http://msdn.microsoft.com/zh-tw/library/1d3t3c61(v=vs.85).aspx-->  
      <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來作會員登入 範例,可以參閱我以前的文章:

      ASP.NET透過AD進行驗證 #4 -- 會員登入、會員專屬網頁 / Login AD Account

 

相關範例可以參考   topcat撰寫的 -- [範例]ASP.NET使用Session驗證練習範例

文章標籤
創作者介紹
創作者 MIS2000 Lab 的頭像
MIS2000 Lab

MIS2000 Lab -- ASP.NET專題實務 / 線上教學文件

MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()