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

摘要:會員登入 與 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 ,請看  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>
            <!-- ***** 自己添加的 (start) ************************************************************** -->           
    </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 網域服務驗證

        http://msdn.microsoft.com/zh-tw/library/ms180890.aspx

如果您要下載上面這個 Windows AD來作會員登入 範例,可以參閱我以前的文章:

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

 

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

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程教學,遠距教學 (Web Form 約 51hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程教學,遠距教學 (ASP.NET MVC 約 135hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.tw  或  school (at) mis2000lab.net

 (1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A 

 (2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I 

[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm  。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b  


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

.........   facebook社團   https://www.facebook.com/mis2000lab   ......................

.........  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)。

...................................................................................................................................................... 

ASP.NET MVC  => .NET Core MVC 線上教學  ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課