Implementace vlastního poskytovatele úložiště MySQL ASP.NET Identity
Raquel Soares De Almeida, Suhas Joshi, Tom FitzMacken
ASP.NET Identity je rozšiřitelný systém, který umožňuje vytvořit vlastního zprostředkovatele úložiště a zapojit ho do aplikace bez nutnosti opětovného zpracování aplikace. Toto téma popisuje, jak vytvořit zprostředkovatele úložiště MySQL pro ASP.NET Identity. Přehled vytváření vlastních zprostředkovatelů úložiště najdete v tématu Přehled vlastních zprostředkovatelů úložiště pro ASP.NET Identity.
K dokončení tohoto kurzu musíte mít Visual Studio 2013 s aktualizací Update 2.
Tento kurz:
- Předvedete, jak vytvořit instanci databáze MySQL v Azure.
- Předveďte, jak pomocí klientského nástroje MySQL (MySQL Workbench) vytvářet tabulky a spravovat vzdálenou databázi v Azure.
- Ukázat, jak nahradit výchozí implementaci úložiště ASP.NET Identity naší vlastní implementací v projektu aplikace MVC.
Tento kurz původně napsali Raquel Soares De Almeida a Rick Anderson ( @RickAndMSFT ). Ukázkový projekt pro Identitu 2.0 aktualizoval Suhas Joshi. Téma pro Identitu 2.0 aktualizoval Tom FitzMacken.
Stažení dokončeného projektu
Na konci tohoto kurzu budete mít projekt aplikace MVC s ASP.NET Identity, která bude pracovat s databází MySQL hostované v Azure.
Dokončeného zprostředkovatele úložiště MySQL si můžete stáhnout z webu AspNet.Identity.MySQL (GitHub).
Kroky, které provedete
V tomto kurzu:
- Vytvoření databáze MySQL v Azure
- Vytvoření tabulek ASP.NET Identity v MySQL
- Vytvoření aplikace MVC a konfigurace pro použití poskytovatele MySQL
- Spuštění aplikace
Toto téma nepopisuje architekturu ASP.NET Identity a rozhodnutí, která musíte provést při implementaci zprostředkovatele úložiště zákazníka. Informace najdete v tématu Přehled vlastních poskytovatelů úložiště pro ASP.NET Identity.
Projděte si třídy poskytovatele úložiště MySQL.
Než se pustíme do postupu vytvoření poskytovatele úložiště MySQL, podívejme se na třídy, které tvoří poskytovatele úložiště. Budete potřebovat třídy, které spravují databázové operace a třídy volané z aplikace ke správě uživatelů a rolí.
Třídy úložiště
- IdentityUser – obsahuje vlastnosti uživatele.
- UserStore – obsahuje operace pro přidávání, aktualizaci nebo načítání uživatelů.
- IdentityRole – obsahuje vlastnosti rolí.
- RoleStore – obsahuje operace pro přidávání, odstraňování, aktualizaci a načítání rolí.
Třídy vrstvy přístupu k datům
V tomto příkladu třídy datové vrstvy obsahují příkazy SQL pro práci s tabulkami; V kódu však můžete chtít použít objektově-relační mapování (ORM), jako je Entity Framework nebo NHibernate. Konkrétně může dojít k nízkému výkonu aplikace bez ORM, který zahrnuje opožděné načítání a ukládání objektů do mezipaměti.
- MySQLDatabase – obsahuje připojení k databázi MySQL a metody pro provádění databázových operací. Instance UserStore i RoleStore se vytvoří s instancí této třídy.
- RoleTable – obsahuje databázové operace pro tabulku, ve které jsou uloženy role.
- UserClaimsTable – obsahuje databázové operace pro tabulku, která ukládá deklarace identity uživatelů.
- UserLoginsTable – obsahuje databázové operace pro tabulku, která ukládá přihlašovací údaje uživatele.
- UserRoleTable – obsahuje databázové operace pro tabulku, která ukládá, kteří uživatelé jsou přiřazeni ke kterým rolím.
- UserTable – obsahuje databázové operace pro tabulku, ve které jsou uloženi uživatelé.
Vytvoření instance databáze MySQL v Azure
- Přihlaste se k webu Azure Portal.
- V dolní části stránky klikněte na +NOVÝ a pak vyberte STORE.
- V průvodci Zvolit a přidat vyberte ClearDB MySQL Database a klikněte na šipku Další v pravém dolním rohu dialogového okna.
- Ponechte výchozí plán Free a změňte Název na IdentityMySQLDatabase. Vyberte nejbližší oblast a klikněte na šipku Další.
- Kliknutím na značku zaškrtnutí dokončete vytváření databáze.
- Po vytvoření databáze ji můžete spravovat na kartě DOPLŇKY na portálu pro správu.
- Informace o připojení k databázi získáte kliknutím na INFORMACE O PŘIPOJENÍ v dolní části stránky.
- Zkopírujte připojovací řetězec kliknutím na tlačítko kopírování a uložte ho, abyste ho mohli později použít v aplikaci MVC.
Vytvoření tabulek ASP.NET Identity v databázi MySQL
Instalace nástroje MySQL Workbench pro připojení a správu databáze MySQL
- Instalace nástroje MySQL Workbench ze stránky pro stažení MySQL
- Spusťte aplikaci a přidejte kliknutím na tlačítko MySQLConnections + přidejte nové připojení. Použijte data připojovacího řetězce, která jste zkopírovali z databáze Azure MySQL, kterou jste vytvořili dříve v tomto kurzu.
- Po navázání připojení otevřete novou kartu Dotaz . Vložte příkazy z mySQLIdentity.sql do dotazu a spusťte ho, aby se vytvořily databázové tabulky.
- Teď máte všechny potřebné tabulky ASP.NET Identity vytvořené v databázi MySQL hostované v Azure, jak je znázorněno níže.
Vytvoření projektu aplikace MVC ze šablony a jeho konfigurace pro použití poskytovatele MySQL
V případě potřeby nainstalujte Visual Studio Express 2013 pro web nebo Visual Studio 2013 s aktualizací Update 2.
Stáhněte ASP.NET. Projekt Identity.MySQL z GitHubu
- Přejděte na adresu URL úložiště na adrese AspNet.Identity.MySQL (GitHub).
- Stáhněte zdrojový kód.
- Extrahujte soubor .zip do místní složky.
- Otevřete řešení AspNet.Identity.MySQL a sestavte ho.
Vytvoření nového projektu aplikace MVC ze šablony
Klikněte pravým tlačítkem na řešení AspNet.Identity.MySQL a přidejtenový projekt.
V dialogovém okně Přidat nový projekt vyberte na levé straně Visual C# , pak Web a pak vyberte ASP.NET Web Application. Pojmenujte projekt IdentityMySQLDemo. a potom klikněte na OK.
V dialogovém okně Nový projekt ASP.NET vyberte šablonu MVC s výchozími možnostmi (která jako metodu ověřování zahrnuje jednotlivé uživatelské účty ) a klikněte na OK.
V Průzkumník řešení klikněte pravým tlačítkem na projekt IdentityMySQLDemo a vyberte Spravovat balíčky NuGet. V dialogovém okně hledat text zadejte Identity.EntityFramework. V seznamu výsledků vyberte tento balíček a klikněte na Odinstalovat. Zobrazí se výzva k odinstalaci balíčku závislostí EntityFramework. Klikněte na Ano, protože tento balíček v této aplikaci už nebudeme.
Klikněte pravým tlačítkem na projekt IdentityMySQLDemo, vyberte Add, Reference, Solution, Projects, vyberte projekt AspNet.Identity.MySQL a klikněte na OK.
V projektu IdentityMySQLDemo nahraďte všechny odkazy na
using Microsoft.AspNet.Identity.EntityFramework;
with
using AspNet.Identity.MySQL;
V souboru IdentityModels.cs nastavte ApplicationDbContext tak, aby byl odvozen z databáze MySqlDatabase , a přidejte konstruktor, který převezme jeden parametr s názvem připojení.
public class ApplicationDbContext : MySQLDatabase { public ApplicationDbContext(string connectionName) : base(connectionName) { } public static ApplicationDbContext Create() { return new ApplicationDbContext("DefaultConnection"); } }
Otevřete soubor IdentityConfig.cs. V metodě ApplicationUserManager.Create nahraďte instanci UserManager následujícím kódem:
var manager = new ApplicationUserManager( new UserStore<ApplicationUser>( context.Get<ApplicationDbContext>() as MySQLDatabase));
Otevřete soubor web.config a nahraďte řetězec DefaultConnection touto položkou a nahraďte zvýrazněné hodnoty připojovacím řetězcem databáze MySQL, kterou jste vytvořili v předchozích krocích:
<add name="DefaultConnection" connectionString="Database=IdentityMySQLDatabase; Data Source=<DataSource>;User Id=<UserID>;Password=<Password>" providerName="MySql.Data.MySqlClient" />
Spuštění aplikace a připojení k databázi MySQL
Klikněte pravým tlačítkem na projekt IdentityMySQLDemo a vyberte Nastavit jako spouštěný projekt.
Stisknutím ctrl + F5 sestavte a spusťte aplikaci.
V horní části stránky klikněte na kartu Zaregistrovat .
Zadejte nové uživatelské jméno a heslo a klikněte na Zaregistrovat.
Nový uživatel je teď zaregistrovaný a přihlášený.
Zpět k nástroji MySQL Workbench a zkontrolujte obsah tabulky IdentityMySQLDatabase. Při registraci nových uživatelů zkontrolujte, jestli tabulka uživatelů neobsahuje položky.
Další kroky
Další informace o tom, jak v této aplikaci povolit další metody ověřování, najdete v tématu Vytvoření aplikace ASP.NET MVC 5 pomocí Facebooku a Google OAuth2 a přihlášení openID.
Informace o integraci databáze s OAuth a nastavení rolí pro omezení přístupu uživatelů k vaší aplikaci najdete v tématu Nasazení zabezpečené aplikace ASP.NET MVC 5 s členstvím, OAuth a SQL Database do Azure.