[YouTube影片] [會員登入] ASP.NET Identity for Web Form,您一定要看

摘要:會員登入 - ASP.NET Identity for Web Form

ASP.NET Identity大多數都是以 ASP.NET MVC為範例解說,
撰寫 Web Form 的朋友完全摸不著頭緒....參照微軟的範例,我簡化之後分享給大家

附上 Youtube教學影片

 

資料來源:http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

 

ASP.NET Identity大多數都是以 ASP.NET MVC為範例解說,

撰寫 Web Form 的朋友完全摸不著頭緒

微軟提供了一個簡單的範例給大家參考(如上述的URL)

 

錄製好的教學影片,請看: https://youtu.be/9l7AM5R9yQQ


 

 

 

 

 

一開始的設定步驟如下:

第一,建立一個新網站(WebSite),一般的ASP.NET Web Form使用的即可

 

第二,使用預設的網站(直接編譯整個網站)

      從執行畫面裡頭,註冊一個帳號來測試

      如此一來,就會自動在 /App_Data目錄下,產生一個會員資料庫(存放帳號與密碼)

 

下圖,執行網站(預設的網站內容,右上方可以「註冊」會員)
     

依照微軟的範例(上述的URL),撰寫 Login畫面如下:

      畫面上沒有使用到「工具箱」裡面的 Login控制項

      全部都是最簡單的 TextBox與Button而已!

 

畫面上,不就是兩個 Textbox,

一個輸入帳號、一個輸入密碼

然後按下「登入」按鈕去檢查帳號&密碼是否存在??

 

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

 

後置程式碼如下:

首先,加入命名空間。

當然,使用舊版本的朋友,您先從 NuGet安裝這些套件。

VS 2013 Update 4起應該會自動幫您做好。

//*************************************
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Owin.Security;
//*************************************

 

輸入帳號與密碼,按下登入(Login)按鈕,程式如下

        var userStore = new UserStore<IdentityUser>();
        var userManager = new UserManager<IdentityUser>(userStore);
 
        var user = userManager.Find(TextBox1.Text, TextBox2.Text);   //檢查「帳號、密碼」是否正確 ??
       // 新版本會在這些 "方法後面"加上 "Async"字眼。表示:這些方法可以透過非同步的方式來進行。
 
        if (user != null)   {  //此人(帳號)存在。
            var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
            var userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
 
            authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, userIdentity);
            Response.Redirect("會員登入網頁.aspx");
        }
        else    {
            StatusText.Text = "<font color=red>帳號、密碼有錯!</font>";
            LoginStatus.Visible = true;
        }

 

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

想要離開,登出 (Logout) 按鈕的程式如下

        var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
        authenticationManager.SignOut();
 
        Response.Redirect("會員登入網頁.aspx");
 
 
上面用到的 Microsoft.AspNet.Identity.UserManager<TUser, TKey>
非常重要!!!
 
不管是新增一個帳號、檢查帳號是否存在?.......都得用到他!
.......................................................................................................................
舉例來說,我要 "新增" 一個會員帳號,程式如下:
         var userStore = new UserStore<IdentityUser>();
         var manager = new UserManager<IdentityUser>(userStore);
 
         var user = new IdentityUser() { UserName = TextBox1.Text };  //輸入帳號名稱
         IdentityResult result = manager.Create(user, TextBox2.Text);  // 建立帳號&密碼
            // 新版本改為 .CreateAsync() 非同步的方法。
            // https://msdn.microsoft.com/zh-tw/library/dn468199(v=vs.111).aspx
 
         if (result.Succeeded)    {
               StatusMessage.Text = string.Format("使用者 {0} 建立成功!", user.UserName);
         }
         else    {
               StatusMessage.Text = result.Errors.FirstOrDefault();   // 錯誤訊息
         }
      }
 
.......................................................................................................................
您可以透過 UserManager 的各種方法
1.  例如 .FindById()方法、.FindByName()方法
2.  如果要設定密碼,有 .ChangePassword()方法、.AddPassword()方法
3.  取得使用者登入,如 GetLogin()方法
新版本會在這些 "方法後面"加上 "Async"字眼。表示:這些方法可以透過 "非同步" 的方式來進行。

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

如果想要檢查,對方是否照著規定登入?還是拿到網址(URL)直接攻進來呢?

    以前,我們會在後端管理區的每一個網頁,逐一檢查他是否取得 Session ?? Cookie ??

    這裡的作法也雷同,請參考:

    protected void Page_Load(object sender, EventArgs e)    {
        if (!IsPostBack)    {
            if (User.Identity.IsAuthenticated)    {
                  Label1.Text = string.Format("您好,<h3> {0}!! </h3>歡迎光臨", User.Identity.GetUserName());
                  // 正確登入
            }
            else    {
                   // 違法登入!!!!
            }
        }
    }

 

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

如果要設定、管理「權限」

    可以參閱Microsoft.AspNet.Identity.RoleManager

    詳見 https://msdn.microsoft.com/zh-tw/library/dn468201(v=vs.111).aspx

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

如果想要把會員資料庫,轉移到正式版 SQL Server

    /App_Code目錄下,有一個類別名為 IdentityModels

    將底下的資料庫連結字串,改成您要的即可。

    這個資料庫連結字串,對應 Web.Config裡面的設定!

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>     {
        public ApplicationDbContext()
            : base("testConnectionString")    // 對應Web.config裡面的資料庫連結字串
        {
        }
    }

 

 

 

範例下載:https://onedrive.live.com/?cid=6F7F668080F24B20&id=6F7F668080F24B20%21115

請在這個網址,下載檔案 -- WebSite_2013_Login_CS.rar       VS 2015變化不大  幾乎一樣。

 

以上範例源自微軟官方網站,我經過簡化,只介紹重點。

如果您要看完整內容,請到http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

 

這裡有微軟的官方教學影片(2014/12/5) -- http://channel9.msdn.com/Series/Customizing-ASPNET-Authentication-with-Identity/01

 


 

 

 

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

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

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

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

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

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


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 (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估