本節說明在 MVC 4 範本上使用簡單成員資格提供者的能力。 設定 OAuth 相容性,以便應用程式使用來自 Google、Facebook、Twitter 或其他協力廠商提供者的外部認證登入。
本教學課程會建立一個使用簡單成員資格提供者的應用程式,然後新增協力廠商 (Google) OAuth 驗證支援。
此功能已新增於 MySQL Connector/NET 6.9.0 中。
若要開始使用新專案,請執行下列動作
開啟 Visual Studio,建立 ASP.NET MVC 4 Web 應用程式類型的新專案,並設定專案以使用 .NET Framework 4.5。 下圖顯示「新專案」視窗的範例,並選取了項目。
選擇您喜歡的範本和檢視引擎。 本教學課程使用具有 Razor 檢視引擎的 網際網路應用程式範本 (請參閱下圖)。 您也可以選擇性地選取 建立單元測試專案,新增單元測試專案。
新增對
MySql.Data、MySql.Data.Entities和MySql.Web組件的參考。 選取的組件必須符合範本新增至專案的 .NET Framework 和 Entity Framework 版本。將有效的 MySQL 連線字串新增至
web.config檔案,類似於下列範例。<add name="MyConnection" connectionString="server=localhost; UserId=root; password=pass; database=MySqlSimpleMembership; logging=true;port=3305" providerName="MySql.Data.MySqlClient"/>在
<system.data>節點下,新增類似於下列範例的設定資訊。<membership defaultProvider="MySqlSimpleMembershipProvider"> <providers> <clear/> <add name="MySqlSimpleMembershipProvider" type="MySql.Web.Security.MySqlSimpleMembershipProvider,MySql.Web, Version=6.9.2.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" applicationName="MySqlSimpleMembershipTest" description="MySQLdefaultapplication" connectionStringName="MyConnection" userTableName="MyUserTable" userIdColumn="MyUserIdColumn" userNameColumn="MyUserNameColumn" autoGenerateTables="True"/> </providers> </membership>使用下列屬性的有效值更新設定:
connectionStringName、userTableName、userIdColumn、userNameColumn和autoGenerateTables。userTableName:用於儲存使用者資訊的資料表名稱。 此資料表與提供者產生的結構描述無關,且日後可以變更。userId:儲存userTableName中記錄 ID 的資料行名稱。userName:儲存userTableName中記錄的名稱/使用者的資料行名稱。connectionStringName:此屬性必須符合在web.config檔案中定義的連線字串。autoGenerateTables:如果處理認證的資料表已存在,則必須將其設定為false。
使用已設定的連線字串名稱更新您的
DBContext類別。從
Filters/資料夾開啟InitializeSimpleMembershipAttribute.cs檔案,並找到SimpleMembershipInitializer類別。 然後找到WebSecurity.InitializeDatabaseConnection方法呼叫,並使用connectionStringName、userTableName、userIdColumn和userNameColumn的設定更新參數。如果連線字串中設定的資料庫不存在,請建立該資料庫。
在執行 Web 應用程式後,成功時會顯示產生的首頁 (請參閱下圖)。
如果應用程式成功執行,則產生的結構描述會類似於下圖,其中顯示了一個開啟至資料表的物件瀏覽器。
若要建立使用者登入,請按一下產生的網頁上的 。 輸入使用者名稱和密碼,然後執行註冊表單。 此動作會將您重新導向至首頁,並登入新建立的使用者。
新建立的使用者資料可以位於
UserProfile和Webpages_Membership資料表中。
OAuth 是使用簡單成員資格提供者的網站的另一個驗證選項。 可以使用 Facebook、Twitter、Google 和其他外部帳戶驗證使用者。
請使用下列步驟,在應用程式中使用 Google 帳戶啟用驗證
在
App_Start資料夾中找到AuthConfig.cs檔案。由於本教學課程使用 Google,請找到
RegisterAuth方法,並取消註解呼叫OauthWebSecurity.RegisterGoogleClient的最後一行。執行應用程式。 應用程式執行時,按一下 以開啟登入頁面。 然後,按一下 使用其他服務登入 下的 (如下圖所示)。
此動作會重新導向至 Google 登入頁面 (google.com),並要求您使用 Google 帳戶資訊登入。
提交正確的認證後,會出現訊息要求允許您的應用程式存取使用者的資訊。 請閱讀說明,然後按一下 以允許引用的動作,並重新導向回應用程式的登入頁面。
應用程式現在可以註冊帳戶。 使用者名稱欄位將會填入適當的資訊 (在此範例中,為與 Google 帳戶相關聯的電子郵件地址)。 按一下 ,以使用您的應用程式註冊使用者。
現在,新使用者已使用 OAuth 從外部來源登入應用程式。 有關新使用者的資訊會儲存在
UserProfile和Webpages_OauthMembership資料表中。
若要使用另一個外部選項來驗證使用者,您必須在我們在本教學課程中啟用 Google 提供者的同一個類別中啟用用戶端。 一般而言,提供者會要求您先註冊應用程式,才能允許 OAuth 驗證,一旦註冊,他們通常會提供一個權杖/金鑰和一個 ID,必須在應用程式中註冊提供者時使用。