[會員登入]Membership 與 User Profile升級到 ASP.NET Identity

Membership 與 User Profile升級到 ASP.NET Identity
Migrating Universal Provider Data for Membership and User Profiles to ASP.NET Identity (C#)

 

 

 

 

Migrating Universal Provider Data for Membership and User Profiles to ASP.NET Identity (C#)

資料來源:http://www.asp.net/identity/overview/migrations/migrating-universal-provider-data-for-membership-and-user-profiles-to-aspnet-identity

範例下載:https://github.com/suhasj/UniversalProviders-Identity-Migrations/tree/master/UniversalProviders-Identity-Migrations

建議您拿他的範例下來改,比較順暢!

 

以前的 ASP.NET可以透過 Login控制項、建立一個專屬的會員資料庫

VS 2013起,改用 ASP.NET Identity取代之

詳見舊文:

 

但還是有很多人想要延續 "以前"那個會員資料庫,尤其是 User Profile功能真的超酷!

.NET 4.0(含)以前的作法

點選下圖,可以連結到微軟網站的原文

      

 

古人說:不役於物

      連「會員登入」都要依靠精靈、控制項才能作.....其實,有點誇張了

      這也是 ASP.NET (Web Form) 初學者的通病,過份依賴 ASP.NET控制項(或是精靈)

 

我找到了微軟一篇範例(如上所示),簡單把步驟說明如下

希望可以省下您找資料、或是看英文比較慢的困擾

 

而且有些步驟,我照著原文操作卻失敗,後續也會提醒您有些小地方要注意

 

第一,您最好先把「舊版的會員資料庫(如下圖)」掛載到新的網站、或專案裡面

因為照著原文操作,我 "完全做不出" (無法自動產生)舊版的會員資料庫

 

自動產生的:都是新版的ASP.NET Identity「預設」的會員資料庫,這會導致錯誤。

下圖才是「舊的」會員資料庫

點選下圖,可以連結到微軟網站的原文

      

 

第二,您要撰寫一個類別檔.cs 或是.vb),我將他名為 Class1_Profiles.cs

 

務必自己動手,加上這段命名空間  

using System.ComponentModel.DataAnnotations.Schema;

using System.Web.Profile;    // 手動加入宣告(ProfileBase都會用上)

 

粉紅底色的部分,原文沒講。您得看原始檔才知道漏了這一段描述

[Serializable]
[ComplexType]
    public class ProfileInfo
    {
        .......
    }
 
[Serializable]
[ComplexType]
    public class PersonalStats
    {
        .......
    }
 
 
    //=======================================
    //== 重點在於 : ProfileBase (上方需加入宣告 System.Web.Profile)
[Serializable]
[ComplexType]
    public class Class1_Profiles : ProfileBase
    {
        .......
    }

 

第三,修改 Web.Config檔案

把原本被刪除掉的部分,改成下面藍色字體的部分。

 
    <membership>
      <providers>
        <!--
     已在此範本中停用 ASP.NET 成員。請造訪以下連結 http://go.microsoft.com/fwlink/?LinkId=301889 以深入了解此範本支援的 ASP.NET 成員
        -->
        <clear />
      </providers>
    </membership>
    <profile>
      <providers>
        <!--
     已在此範本中停用 ASP.NET 成員設定檔。請造訪以下連結 http://go.microsoft.com/fwlink/?LinkId=301889 以深入了解此範本支援的 ASP.NET 成員
        -->
        <clear />
      </providers>
    </profile>
    <roleManager>
      <!--
       已在此範本中停用 ASP.NET 成員角色。請造訪以下連結 http://go.microsoft.com/fwlink/?LinkId=301889 以深入了解此範本支援的 ASP.NET 成員
        -->
      <providers>
        <clear />
      </providers>
    </roleManager>

 

 

 

 

 

請修改如下。

 

黃色底色,就是您的類別檔

                 如果您使用「專案」來開發,記得要把類別檔的「NameSpace」也補上,才正確。

綠色底色代表DB的連結字串,您可能跟我有差異。

 

   <!-- *** 請動手修改下面這一區塊!***************************************************  -->
    <profile defaultProvider="DefaultProfileProvider" enabled="true" inherits="Class1_Profiles">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
 
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
 
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <!-- *** 請動手修改上面這一區塊!***************************************************  -->

 

重點是:Web.config檔裡面的設定值,您最好一一比對一下

      如果有些套件沒有安裝,請透過 NuGet補上

      原文說明不清楚,害我吃足了苦頭

      例如:DotNet.OpenAuth這東西,預設的 Web.config裡面並沒有

 

第四,有了以上設定,您可以照著微軟網站的說明,來撰寫畫面了

這些就是簡單步驟,不再贅述

 

 

微軟的文章真的只是  "點到為止",說個"大概".....就停手了

要靠網路文章學習新東西,還真的滿困難的

 

範例下載:https://github.com/suhasj/UniversalProviders-Identity-Migrations/tree/master/UniversalProviders-Identity-Migrations

 

關於 ASP.NET Identity的文章:

 

 

 

 

 

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

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課