sql >> Databáze >  >> RDS >> Sqlserver

Použití MVC 4 SimpleMembership s existujícím modelem EF s první databází

Čistě jako referenční bod může být dobrý nápad vytvořit novou šablonu internetové aplikace projektu webové aplikace ASP.NET MVC 4 (tj. přes Soubor> Nový projekt).

Pokud se podíváte na AccountController , jak říká @zms6445, je ozdoben InitializeSimpleMembership atribut. Implementaci tohoto atributu naleznete v souboru InitializeSimpleMembershipAttribute.cs ve složce Filtry v kořenovém adresáři.

Zde je chybějící část skládačky – musíte připojit svou stávající databázi, aby ji používal SimpleMembershipProvider . Toto je kód, který potřebujete:

private class SimpleMembershipInitializer
{
    public SimpleMembershipInitializer()
    {
        try
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
            }
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException("Something is wrong", ex);
        }
    }
}

Několik poznámek:

  1. CONNECTION_STRING_NAME je položka ve vašem web.config ConnectionStrings – zde NEMŮŽETE použít model připojení – SimpleMembershipProvider nezná tento formát! Musíte zadat System.Data.SqlClient spojovací řetězec, např.

  2. USER_TABLE je tabulka ve vaší databázi, která obsahuje další informace o uživateli, jako je jméno, příjmení atd. Tato tabulka je propojena s automaticky generovanými tabulkami prostřednictvím pole USER_ID_FIELD.

  3. USER_ID_FIELD je obvykle primární klíč vaší tabulky Uživatelé. Musí být typu int .

  4. USER_ID_NAME je jedinečné jméno pro uživatele, což může být e-mailová adresa.

  5. autoCreateTables je nastaveno na true aby bylo zajištěno, že tabulky potřebné pro fungování SimpleMembership budou vytvořeny, pokud ještě neexistují.

Tento kód se samozřejmě spustí pouze v případě, že se dostanete na stránku prostřednictvím AccountController , protože toto bylo zdobeno přívlastkem. Mohli byste tam vložit bod přerušení a vidět to v akci.

Tohle by vám mělo začít – šablona Internet Application je docela dobrá šablona, ​​kterou byste měli následovat, pokud uvíznete.

Doufám, že to pomůže.



  1. SQL - Chyba sloupce procedury

  2. Uzel MySQL Galera se nespouští (přerušení s chybou 'WSREP:[...]:60:nepodařilo se dosáhnout primárního zobrazení:60 (vypršel časový limit operace)')

  3. Automatizujte provádění více skriptů SQL Server 2012 v určitém pořadí

  4. Ignorovat duplicitní klíč?