Sdílet prostřednictvím


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:

  1. Vytvoření databáze MySQL v Azure
  2. Vytvoření tabulek ASP.NET Identity v MySQL
  3. Vytvoření aplikace MVC a konfigurace pro použití poskytovatele MySQL
  4. 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

  1. Přihlaste se k webu Azure Portal.
  2. V dolní části stránky klikněte na +NOVÝ a pak vyberte STORE.
    Obrázek znázorňující, jak získat přístup k webu Azure Portal Store
  3. 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.
    Obrázek znázorňující reklamu Clear D B My S Q L Database
  4. Ponechte výchozí plán Free a změňte Název na IdentityMySQLDatabase. Vyberte nejbližší oblast a klikněte na šipku Další.
    Obrázek vybraného bezplatného plánu a názvu
  5. Kliknutím na značku zaškrtnutí dokončete vytváření databáze.
    Obrázek kontroly nákupu a vytvoření databáze
  6. Po vytvoření databáze ji můžete spravovat na kartě DOPLŇKY na portálu pro správu.
    Obrázek karty doplňky
  7. Informace o připojení k databázi získáte kliknutím na INFORMACE O PŘIPOJENÍ v dolní části stránky.
    Obrázek znázorňující umístění informací o připojení
  8. 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.
    Obrázek znázorňující připojovací řetězec a U R L

Vytvoření tabulek ASP.NET Identity v databázi MySQL

Instalace nástroje MySQL Workbench pro připojení a správu databáze MySQL

  1. Instalace nástroje MySQL Workbench ze stránky pro stažení MySQL
  2. 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.
  3. 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.
  4. 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.
    Obrázek znázorňující tabulky s nezbytnými identitou

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

  1. Přejděte na adresu URL úložiště na adrese AspNet.Identity.MySQL (GitHub).
  2. Stáhněte zdrojový kód.
  3. Extrahujte soubor .zip do místní složky.
  4. Otevřete řešení AspNet.Identity.MySQL a sestavte ho.

Vytvoření nového projektu aplikace MVC ze šablony

  1. Klikněte pravým tlačítkem na řešení AspNet.Identity.MySQL a přidejtenový projekt.

  2. 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.

    Obrázek dialogového okna přidat nový projekt

  3. 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. Obrázek dialogového okna nového projektu A S P dot N E T

  4. 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.

  5. Klikněte pravým tlačítkem na projekt IdentityMySQLDemo, vyberte Add, Reference, Solution, Projects, vyberte projekt AspNet.Identity.MySQL a klikněte na OK.

  6. V projektu IdentityMySQLDemo nahraďte všechny odkazy na
    using Microsoft.AspNet.Identity.EntityFramework;
    with
    using AspNet.Identity.MySQL;

  7. 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");
        }
    }
    
  8. 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));
    
  9. 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

  1. Klikněte pravým tlačítkem na projekt IdentityMySQLDemo a vyberte Nastavit jako spouštěný projekt.

  2. Stisknutím ctrl + F5 sestavte a spusťte aplikaci.

  3. V horní části stránky klikněte na kartu Zaregistrovat .

  4. Zadejte nové uživatelské jméno a heslo a klikněte na Zaregistrovat.

    Obrázek znázorňující nové uživatelské jméno a heslo

  5. Nový uživatel je teď zaregistrovaný a přihlášený.

    Obrázek znázorňující registraci a přihlášení nového uživatele

  6. 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.

    Obrázek nástroje Pro kontrolu my S Q L Workbench

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.