Sdílet prostřednictvím


Vytváření uživatelských účtů (C#)

Scott Mitchell

Poznámka

Od napsání tohoto článku se zprostředkovatelé členství ASP.NET nahradili službou ASP.NET Identity. Důrazně doporučujeme aktualizovat aplikace tak, aby používaly platformu ASP.NET Identity Platform místo zprostředkovatelů členství, které se objevovalo v době psaní tohoto článku. ASP.NET Identity má oproti systému členství ASP.NET řadu výhod, mezi které patří:

  • Lepší výkon
  • Vylepšená rozšiřitelnost a testovatelnost
  • Podpora OAuth, OpenID Connect a dvojúrovňového ověřování
  • Podpora identit založených na deklarací identity
  • Lepší interoperabilita s ASP.Net Core

Stažení kódu nebo stažení souboru PDF

V tomto kurzu prozkoumáme vytváření nových uživatelských účtů pomocí rozhraní Membership (prostřednictvím sqlMembershipProvider). Uvidíme, jak vytvářet nové uživatele programově a prostřednictvím ASP. Net je integrovaný ovládací prvek CreateUserWizard.

Úvod

V předchozím kurzu jsme do databáze nainstalovali schéma aplikačních služeb, které přidaly tabulky, zobrazení a uložené procedury potřebné pro SqlMembershipProvider a SqlRoleProvider. Tím se vytvořila infrastruktura, kterou budeme potřebovat ve zbývajících kurzech v této sérii. V tomto kurzu prozkoumáme vytváření nových uživatelských účtů pomocí architektury Členství (prostřednictvím SqlMembershipProvider). Uvidíme, jak vytvářet nové uživatele programově a prostřednictvím ASP. Net je integrovaný ovládací prvek CreateUserWizard.

Kromě toho, že se naučíme vytvářet nové uživatelské účty, budeme také muset aktualizovat ukázkový web, který jsme vytvořili v kurzu Přehled ověřování pomocí formulářů a pak jsme ho vylepšili v kurzu Konfigurace ověřování pomocí formulářů a pokročilá témata. Naše ukázková webová aplikace má přihlašovací stránku, která ověřuje přihlašovací údaje uživatelů proti pevně zakódovaným dvojicím uživatelského jména a hesla. Kromě toho obsahuje kód, Global.asax který vytváří vlastní IPrincipal objekty a IIdentity pro ověřené uživatele. Aktualizujeme přihlašovací stránku, abychom ověřili přihlašovací údaje uživatelů v rámci členství, a odebereme vlastní logiku objektu zabezpečení a identity.

Pusťme se do toho.

Kontrolní seznam pro ověřování ve formulářích a členství

Než začneme pracovat s architekturou členství, pojďme se na chvíli podívat na důležité kroky, které jsme k dosažení tohoto bodu podnikli. Pokud používáte architekturu Členství se SqlMembershipProvider službou ve scénáři ověřování založeného na formulářích, je potřeba před implementací funkce členství ve webové aplikaci provést následující kroky:

  1. Povolte ověřování na základě formulářů. Jak jsme probrali v přehledu ověřování pomocí formulářů, ověřování pomocí formulářů je povoleno úpravou Web.config a nastavením atributu mode elementu <authentication> na Forms. Při povoleném ověřování pomocí formulářů se u každého příchozího požadavku prověří lístek ověřování pomocí formulářů, který v případě, že existuje, identifikuje žadatele.
  2. Přidejte schéma aplikačních služeb do příslušné databáze. Při použití SqlMembershipProvider je potřeba nainstalovat schéma aplikačních služeb do databáze. Toto schéma se obvykle přidává do stejné databáze, která obsahuje datový model aplikace. Kurz Vytvoření schématu členství v SQL Server se zaměřil na použití aspnet_regsql.exe tohoto nástroje.
  3. Upravte nastavení webové aplikace tak, aby odkazovat na databázi z kroku 2. Kurz Vytvoření schématu členství v SQL Server ukázal dva způsoby konfigurace webové aplikace tak, aby SqlMembershipProvider používala databázi vybranou v kroku 2: úpravou názvu připojovacího LocalSqlServer řetězce nebo přidáním nového registrovaného zprostředkovatele do seznamu zprostředkovatelů architektury členství a přizpůsobením tohoto nového zprostředkovatele pro použití databáze z kroku 2.

Při vytváření webové aplikace, která používá SqlMembershipProvider ověřování pomocí formulářů a budete muset před použitím Membership třídy nebo webové ovládací prvky ASP.NET Login provést tyto tři kroky. Vzhledem k tomu, že jsme tyto kroky již provedli v předchozích kurzech, jsme připraveni začít používat rozhraní Membership!

Krok 1: Přidání nových stránek ASP.NET

V tomto kurzu a dalších třech se budeme zabývat různými funkcemi a možnostmi souvisejícími s členstvím. K implementaci témat prozkoumaných v rámci těchto kurzů budeme potřebovat řadu ASP.NET stránek. Pojďme vytvořit tyto stránky a pak soubor (Web.sitemap)mapy webu .

Začněte vytvořením nové složky v projektu s názvem Membership. Dále do složky přidejte pět nových ASP.NET stránek Membership a každou stránku propojíte se stránkou Site.master předlohy. Pojmenujte stránky:

  • CreatingUserAccounts.aspx
  • UserBasedAuthorization.aspx
  • EnhancedCreateUserWizard.aspx
  • AdditionalUserInfo.aspx
  • Guestbook.aspx

V tuto chvíli by Průzkumník řešení vašeho projektu měly vypadat podobně jako na obrázku 1.

Do složky Členství bylo přidáno pět nových stránek.

Obrázek 1: Do složky bylo přidáno Membership pět nových stránek (kliknutím zobrazíte obrázek v plné velikosti)

Každá stránka by v tomto okamžiku měla mít dva ovládací prvky Obsahu, jeden pro každý ContentPlaceHolders stránky předlohy: MainContent a LoginContent.

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent"

Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="LoginContent"
Runat="Server">
</asp:Content>

Vzpomeňte LoginContent si, že výchozí kód ContentPlaceHolder zobrazuje odkaz pro přihlášení nebo odhlášení z webu v závislosti na tom, jestli je uživatel ověřený. Přítomnost Content2 ovládacího prvku Obsah však přepíše výchozí značky stránky předlohy. Jak jsme probrali v kurzu Přehled ověřování pomocí formulářů, je to užitečné na stránkách, kde nechceme v levém sloupci zobrazovat možnosti související s přihlášením.

Pro těchto pět stránek ale chceme zobrazit výchozí značky stránky předlohy pro LoginContent ContentPlaceHolder. Proto odeberte deklarativní kód pro Content2 ovládací prvek Obsahu. Jakmile to uděláte, měl by každý z pěti stránek obsahovat jenom jeden ovládací prvek Obsahu.

Krok 2: Vytvoření mapy webu

Všechny weby kromě těch nejzásadnějších potřebují implementovat určitou formu navigačního uživatelského rozhraní. Uživatelské rozhraní navigace může být jednoduchý seznam odkazů na různé části webu. Tyto odkazy mohou být také uspořádány do nabídek nebo stromových zobrazení. Jako vývojáři stránek tvoří vytvoření navigačního uživatelského rozhraní jenom polovinu textu. Potřebujeme také nějaké prostředky k definování logické struktury lokality udržovatelným a aktualizovatelným způsobem. S tím, jak se přidávají nové stránky nebo odebírají stávající stránky, chceme mít možnost aktualizovat jeden zdroj – mapu webu – a tyto změny se projeví v navigačním uživatelském rozhraní webu.

Tyto dvě úlohy – definování mapy webu a implementace navigačního uživatelského rozhraní založeného na mapě webu – se snadno splní díky architektuře Mapa webu a ovládacím prvkům navigace na webu přidaným v ASP.NET verzi 2.0. Architektura mapy webu umožňuje vývojářům definovat mapu webu a pak k ní přistupovat prostřednictvím programového rozhraní API ( SiteMap třída ). Předdefinované navigační webové ovládací prvky zahrnují Menu ovládací prvek, TreeView ovládací prvek a SiteMapPath ovládací prvek.

Stejně jako architektury Členství a Role je architektura Mapa webu vytvořená na základě modelu zprostředkovatele. Úlohou třídy zprostředkovatele mapy webu je vygenerovat strukturu v paměti používanou SiteMap třídou z trvalého úložiště dat, jako je soubor XML nebo tabulka databáze. Rozhraní .NET Framework se dodává s výchozím zprostředkovatelem mapy webu, který čte data mapy webu ze souboru XML (XmlSiteMapProvider), a tohoto zprostředkovatele budeme používat v tomto kurzu. Některé alternativní implementace zprostředkovatele mapy webu najdete v části Další materiály na konci tohoto kurzu.

Výchozí zprostředkovatel mapy webu očekává, že kořenový adresář bude existovat správně formátovaný soubor XML s názvem Web.sitemap . Vzhledem k tomu, že používáme tohoto výchozího zprostředkovatele, musíme takový soubor přidat a definovat strukturu mapy webu v odpovídajícím formátu XML. Pokud chcete přidat soubor, klikněte pravým tlačítkem na název projektu v Průzkumník řešení a zvolte Přidat novou položku. V dialogovém okně zvolte, že chcete přidat soubor typu Mapa webu s názvem Web.sitemap.

Přidání souboru Web.sitemap do kořenového adresáře projektu

Obrázek 2: Přidání souboru s názvem Web.sitemap do kořenového adresáře projektu (kliknutím zobrazíte obrázek v plné velikosti)

Mapový soubor webu XML definuje strukturu webu jako hierarchii. Tento hierarchický vztah je modelován v souboru XML prostřednictvím původu elementů <siteMapNode> . Musí Web.sitemap začínat nadřazeným <siteMap> uzlem, který má přesně jeden <siteMapNode> podřízený uzel. Tento prvek nejvyšší úrovně <siteMapNode> představuje kořen hierarchie a může mít libovolný počet sestupných uzlů. Každý <siteMapNode> prvek musí obsahovat title atribut a volitelně může obsahovat url mimo jiné atributy a description . Každý neprázdný url atribut musí být jedinečný.

Do souboru zadejte následující kód XML Web.sitemap :

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
     <siteMapNode url="~/Default.aspx" title="Home">
          <siteMapNode title="Membership">
               <siteMapNode url="~/Membership/CreatingUserAccounts.aspx" title="Creating User Accounts" />

               <siteMapNode url="~/Membership/UserBasedAuthorization.aspx" title="User-Based Authorization" />
               <siteMapNode url="~/Membership/Guestbook.aspx" title="Storing Additional User Information" />
          </siteMapNode>

     </siteMapNode>
</siteMap>

Výše uvedený kód mapy webu definuje hierarchii zobrazenou na obrázku 3.

Mapa webu představuje hierarchickou navigační strukturu.

Obrázek 3: Mapa webu představuje hierarchickou navigační strukturu (kliknutím zobrazíte obrázek v plné velikosti)

Krok 3: Aktualizace stránky předlohy tak, aby obsahovala navigační uživatelské rozhraní

ASP.NET zahrnuje řadu webových ovládacích prvků souvisejících s navigací pro návrh uživatelského rozhraní. Patří mezi ně Menu, TreeView a SiteMapPath ovládací prvky. Ovládací prvky Menu a TreeView vykreslují strukturu mapy webu v nabídce nebo stromu, zatímco SiteMapPath zobrazuje popis cesty, který zobrazuje aktuální navštívený uzel a jeho předky. Data mapy webu mohou být svázána s jinými datovými webovými ovládacími prvky pomocí SiteMapDataSource a lze k němu přistupovat programově prostřednictvím SiteMap třídy .

Vzhledem k tomu, že důkladná diskuze o architektuře mapy webu a ovládacích prvcích navigace je nad rámec této série kurzů, raději než trávit čas vytvářením vlastního navigačního uživatelského rozhraní si raději vypůjčíme ten, který se používá v mé sérii kurzů Práce s daty v ASP.NET 2.0 , která používá ovládací prvek Repeater k zobrazení seznamu navigačních odkazů se dvěma hlubokými odrážkami. jak je znázorněno na obrázku 4.

Chcete-li vytvořit toto rozhraní, přidejte následující deklarativní kód do levého Site.master sloupce stránky předlohy, kde text "ÚKOL: Nabídka přejde sem..." se aktuálně nachází.

<ul>
     <li>

          <asp:HyperLink runat="server" ID="lnkHome" NavigateUrl="~/Default.aspx">Home</asp:HyperLink>
     </li>
     <asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">

          <ItemTemplate>
               <li>
                    <asp:HyperLink ID="lnkMenuItem" runat="server" 
                         NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>

                    <asp:Repeater ID="submenu" runat="server" DataSource="<%#
                         ((SiteMapNode) Container.DataItem).ChildNodes %>">
                         <HeaderTemplate>
                              <ul>
                         </HeaderTemplate>
                         <ItemTemplate>

                              <li>
                                   <asp:HyperLink ID="lnkMenuItem" runat="server" NavigateUrl='<%#
                                        Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>

                              </li>
                         </ItemTemplate>
                         <FooterTemplate>
                              </ul>
                         </FooterTemplate>
                    </asp:Repeater>
               </li>
          </ItemTemplate>
     </asp:Repeater>

</ul>
    
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />

Výše uvedený kód sváže ovládací prvek Repeater s názvem menu SiteMapDataSource, který vrátí hierarchii mapy webu definovanou v Web.sitemap. Vzhledem k tomu, že vlastnost ovládacího prvku ShowStartingNode SiteMapDataSource je nastavená na Hodnotu False, začne vracet hierarchii mapy webu počínaje sestupnými prvky uzlu "Home". Repeater zobrazí každý z těchto uzlů (aktuálně pouze členství) v elementu <li> . Další vnitřní repeater pak zobrazí podřízené položky aktuálního uzlu ve vnořeném neuspořádaném seznamu.

Obrázek 4 znázorňuje výstup vykreslený výše uvedenou značkou se strukturou mapy webu, kterou jsme vytvořili v kroku 2. Repeater vykreslí vanilka neuspořádaný seznam značky; Pravidla šablony stylů CSS definovaná v Styles.css souboru jsou zodpovědná za esteticky příjemné rozložení. Podrobnější popis fungování výše uvedených značek najdete v kurzu Stránky předlohy a Navigace na webu .

Navigační uživatelské rozhraní se vykresluje pomocí vnořených neuspořádaných seznamů.

Obrázek 4: Navigační uživatelské rozhraní se vykresluje pomocí vnořených neuspořádaných seznamů (kliknutím zobrazíte obrázek v plné velikosti)

Přidání navigace s popisem cesty

Kromě seznamu odkazů v levém sloupci můžeme na každé stránce zobrazit také popis cesty. Popis cesty je prvek navigačního uživatelského rozhraní, který uživatelům rychle ukazuje jejich aktuální pozici v hierarchii lokality. Ovládací prvek SiteMapPath používá architekturu mapa webu k určení aktuálního umístění stránky v mapě webu a pak na základě těchto informací zobrazí popis cesty.

Konkrétně přidejte <span> prvek do elementu záhlaví <div> stránky předlohy a nastavte atribut nového <span> elementu class na "breadcrumb". (Třída Styles.css obsahuje pravidlo pro třídu s popisem cesty.) Dále do tohoto nového <span> elementu přidejte SiteMapPath.

<div id="header">
     <span class="title">User Account Tutorials</span><br />
     <span class="breadcrumb">
          <asp:SiteMapPath ID="SiteMapPath1" runat="server">

          </asp:SiteMapPath>
     </span>
</div>

Obrázek 5 znázorňuje výstup siteMapPath při návštěvě ~/Membership/CreatingUserAccounts.aspx.

Popis cesty zobrazuje aktuální stránku a její předchůdce v mapě webu.

Obrázek 5: Popis cesty zobrazuje aktuální stránku a její předchůdce v mapě webu (kliknutím zobrazíte obrázek v plné velikosti)

Krok 4: Odebrání vlastního objektu zabezpečení a logiky identity

K ověřenému uživateli je možné přidružit vlastní objekty zabezpečení a identity. Dosáhli jsme toho vytvořením obslužné rutiny události pro Global.asax událost aplikace PostAuthenticateRequest , která se aktivuje po FormsAuthenticationModule ověření uživatele. V této obslužné rutině události jsme nahradili GenericPrincipal objekty a FormsIdentity přidané objekty FormsAuthenticationModuleCustomPrincipal a objekty a CustomIdentity , které jsme vytvořili v tomto kurzu.

I když jsou objekty vlastního objektu zabezpečení a identity užitečné v určitých scénářích, ve většině případů GenericPrincipal jsou objekty a FormsIdentity dostatečné. V důsledku toho si myslím, že by bylo vhodné vrátit se k výchozímu chování. Tuto změnu proveďte odebráním nebo zakomentováním obslužné rutiny PostAuthenticateRequest události nebo odstraněním Global.asax souboru úplně.

Krok 5: Vytvoření nového uživatele prostřednictvím kódu programu

Pokud chcete vytvořit nový uživatelský účet prostřednictvím rozhraní členství, použijte metodu Membership třídyCreateUser. Tato metoda má vstupní parametry pro uživatelské jméno, heslo a další pole související s uživatelem. Při vyvolání deleguje vytvoření nového uživatelského účtu na nakonfigurovaného zprostředkovatele členství a pak vrátí MembershipUser objekt představující právě vytvořený uživatelský účet.

Metoda CreateUser má čtyři přetížení, z nichž každé přijímá jiný počet vstupních parametrů:

Tato čtyři přetížení se liší podle množství shromažďovaných informací. První přetížení například vyžaduje pouze uživatelské jméno a heslo pro nový uživatelský účet, zatímco druhé také vyžaduje e-mailovou adresu uživatele.

Tato přetížení existují, protože informace potřebné k vytvoření nového uživatelského účtu závisí na nastavení konfigurace poskytovatele členství. V kurzu Vytvoření schématu členství v SQL Server jsme prozkoumali zadání nastavení konfigurace zprostředkovatele členství v nástroji .Web.config Tabulka 2 obsahovala úplný seznam nastavení konfigurace.

Jedním z takových nastavení konfigurace zprostředkovatele členství, které má vliv na to, jaká CreateUser přetížení mohou být použita, je nastavení requiresQuestionAndAnswer . Pokud requiresQuestionAndAnswer je nastavená hodnota true (výchozí), musíme při vytváření nového uživatelského účtu zadat bezpečnostní otázku a odpověď. Tyto informace se později použijí, pokud uživatel potřebuje resetovat nebo změnit heslo. Konkrétně se jim zobrazí bezpečnostní otázka a musí zadat správnou odpověď, aby bylo možné resetovat nebo změnit heslo. V důsledku toho, pokud requiresQuestionAndAnswer je nastavena na true , volání některého z prvních dvou CreateUser přetížení vede k výjimce, protože bezpečnostní otázka a odpověď chybí. Vzhledem k tomu, že je naše aplikace aktuálně nakonfigurovaná tak, aby vyžadovala bezpečnostní otázku a odpověď, budeme muset při programovém vytváření uživatele použít jedno z posledních dvou přetížení.

Pro ilustraci CreateUser pomocí metody vytvoříme uživatelské rozhraní, ve kterém uživatele vyzveme k zadání jména, hesla, e-mailu a odpovědi na předdefinované bezpečnostní otázky. CreatingUserAccounts.aspx Otevřete stránku ve Membership složce a přidejte do ovládacího prvku Obsah následující webové ovládací prvky:

  • Textové pole s názvem Username
  • Textové pole s názvem Password, jehož TextMode vlastnost je nastavená na Password
  • Textové pole s názvem Email
  • Popisek s názvem SecurityQuestion s Text vymazanou vlastností
  • Textové pole s názvem SecurityAnswer
  • Tlačítko s názvem CreateAccountButton , jehož vlastnost Text je nastavená na "Vytvořit uživatelský účet".
  • Ovládací prvek Popisek s názvem CreateAccountResults s Text vymazanou vlastností

V tomto okamžiku by měla obrazovka vypadat podobně jako na obrázku 6.

Přidání různých webových ovládacích prvků na stránku CreatingUserAccounts.aspx

Obrázek 6: Přidání různých webových ovládacích prvků na CreatingUserAccounts.aspx stránku (kliknutím zobrazíte obrázek v plné velikosti)

Popisky SecurityQuestion a SecurityAnswer textové pole slouží k zobrazení předdefinované bezpečnostní otázky a shromažďování odpovědí uživatele. Všimněte si, že bezpečnostní otázka i odpověď jsou uloženy pro jednotlivé uživatele, takže je možné každému uživateli povolit definovat vlastní bezpečnostní otázku. Pro tento příklad jsem se však rozhodl použít univerzální bezpečnostní otázku, konkrétně: "Jaká je vaše oblíbená barva?"

Chcete-li implementovat tuto předdefinované bezpečnostní otázku, přidejte konstantu do třídy kódu na pozadí stránky s názvem passwordQuestiona přiřaďte jí bezpečnostní otázku. Potom v obslužné rutině Page_Load události přiřaďte tuto konstantu vlastnosti SecurityQuestion Label Text :

const string passwordQuestion = "What is your favorite color";
    
protected void Page_Load(object sender, EventArgs e)
{
     if (!Page.IsPostBack)
          SecurityQuestion.Text = passwordQuestion;
}

Dále vytvořte obslužnou rutinu CreateAccountButtonudálosti pro událost a Click přidejte následující kód:

protected void CreateAccountButton_Click(object sender, EventArgs e)
{
     MembershipCreateStatus createStatus;
     MembershipUser newUser = Membership.CreateUser(Username.Text, Password.Text, Email.Text, passwordQuestion, SecurityAnswer.Text, true, out createStatus);
     switch (createStatus)
     {
          case MembershipCreateStatus.Success:
               CreateAccountResults.Text = "The user account was successfully created!";
               break;
          case MembershipCreateStatus.DuplicateUserName:
               CreateAccountResults.Text = "There already exists a user with this username.";
               break;

          case MembershipCreateStatus.DuplicateEmail:
               CreateAccountResults.Text = "There already exists a user with this email address.";
               break;
          case MembershipCreateStatus.InvalidEmail:
               CreateAccountResults.Text = "There email address you provided in invalid.";
               break;
          case MembershipCreateStatus.InvalidAnswer:
               CreateAccountResults.Text = "There security answer was invalid.";
               break;
          case MembershipCreateStatus.InvalidPassword:
               CreateAccountResults.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character.";

               break;
          default:
               CreateAccountResults.Text = "There was an unknown error; the user account was NOT created.";
               break;
     }
}

Obslužná rutina Click události začíná definováním proměnné s názvem createStatus typu MembershipCreateStatus. MembershipCreateStatus je výčet, který označuje stav CreateUser operace. Pokud se například uživatelský účet úspěšně vytvoří, výsledná MembershipCreateStatus instance se nastaví na hodnotu . SuccessNa druhou stranu pokud operace selže, protože uživatel se stejným uživatelským jménem již existuje, nastaví se na hodnotu DuplicateUserName. V přetížení, které CreateUser používáme, musíme do metody předat MembershipCreateStatus instanci jako out parametr. Tento parametr je nastaven na příslušnou hodnotu v rámci CreateUser metody a můžeme prozkoumat jeho hodnotu po volání metody, abychom zjistili, zda byl uživatelský účet úspěšně vytvořen.

Po volání CreateUserpříkazu se předáním switch použije příkaz k výstupu příslušné zprávy v createStatuszávislosti na hodnotě přiřazené k createStatus. Obrázky 7 znázorňují výstup po úspěšném vytvoření nového uživatele. Obrázky 8 a 9 znázorňují výstup, když se uživatelský účet nevytvořil. Na obrázku 8 návštěvník zadal heslo s pěti písmeny, které nesplňuje požadavky na sílu hesla uvedené v nastavení konfigurace poskytovatele členství. Na obrázku 9 se návštěvník pokouší vytvořit uživatelský účet s existujícím uživatelským jménem (vytvořeném na obrázku 7).

Nový uživatelský účet se úspěšně vytvořil

Obrázek 7: Nový uživatelský účet se úspěšně vytvořil (kliknutím zobrazíte obrázek v plné velikosti)

Uživatelský účet se nevytvořil, protože zadané heslo je příliš slabé.

Obrázek 8: Uživatelský účet se nevytvořil, protože zadané heslo je příliš slabé (kliknutím zobrazíte obrázek v plné velikosti)

Uživatelský účet se nevytvořil, protože uživatelské jméno je již používáno.

Obrázek 9: Uživatelský účet se nevytvořil, protože uživatelské jméno je již používáno (kliknutím zobrazíte obrázek v plné velikosti)

Poznámka

Možná vás zajímá, jak určit úspěch nebo selhání při použití jednoho z prvních dvou CreateUser přetížení metody, z nichž žádná nemá parametr typu MembershipCreateStatus. Tato první dvě přetížení vyvolají MembershipCreateUserException výjimku v případě selhání, která zahrnuje StatusCode vlastnost typu MembershipCreateStatus.

Po vytvoření několika uživatelských účtů ověřte, že se účty vytvořily, výpisem obsahu aspnet_Users tabulek a aspnet_Membership v SecurityTutorials.mdf databázi. Jak ukazuje obrázek 10, na stránce jsme přidali dva uživatele CreatingUserAccounts.aspx : Tito a Bruce.

V úložišti uživatelů členství jsou dva uživatelé: Tito a Bruce

Obrázek 10: V úložišti uživatelů členství jsou dva uživatelé: Tito a Bruce (kliknutím zobrazíte obrázek v plné velikosti)

I když uživatelské úložiště Členství nyní obsahuje informace o účtu Bruce a Tito, zatím jsme neimplementovali funkce, které umožňují Bruce nebo Tito přihlásit se k webu. Login.aspx V současné době ověřuje přihlašovací údaje uživatele proti pevně zakódované sadě párů uživatelského jména a hesla – neověřuje zadané přihlašovací údaje v rámci členství. Prozatím bude muset stačit zobrazení nových uživatelských účtů v aspnet_Users tabulkách a aspnet_Membership . V dalším kurzu Ověřovánípřihlašovacích údajů uživatele v úložišti uživatelů členství aktualizujeme přihlašovací stránku, aby se ověřila v úložišti členství.

Poznámka

Pokud v SecurityTutorials.mdf databázi nevidíte žádné uživatele, může to být způsobeno tím, že vaše webová aplikace používá výchozího zprostředkovatele členství , AspNetSqlMembershipProviderkterý používá ASPNETDB.mdf databázi jako své uživatelské úložiště. Pokud chcete zjistit, jestli se jedná o problém, klikněte na tlačítko Aktualizovat v Průzkumník řešení. Pokud byla do App_Data složky přidána databáze s názvemASPNETDB.mdf, jedná se o problém. Vraťte se ke kroku 4 v kurzu Vytvoření schématu členství v SQL Server, kde najdete pokyny, jak správně nakonfigurovat zprostředkovatele členství.

Ve většině scénářů vytvoření uživatelského účtu se návštěvníku zobrazí rozhraní pro zadání uživatelského jména, hesla, e-mailu a dalších důležitých informací. V takovém okamžiku se vytvoří nový účet. V tomto kroku jsme se podívali na ruční sestavení takového rozhraní a pak jsme zjistili, jak pomocí Membership.CreateUser metody programově přidat nový uživatelský účet na základě vstupů uživatele. Náš kód ale právě vytvořil nový uživatelský účet. Neprovedlo žádné následné akce, jako je přihlášení uživatele k webu pod právě vytvořeným uživatelským účtem nebo odeslání potvrzovacího e-mailu uživateli. Tyto další kroky by vyžadovaly další kód v obslužné rutině Click události tlačítka.

ASP.NET se dodává s ovládacím prvku CreateUserWizard, který je navržený tak, aby zvládl proces vytváření uživatelských účtů, od vykreslování uživatelského rozhraní pro vytváření nových uživatelských účtů až po vytvoření účtu v rámci členství a provádění úloh po vytvoření účtu, jako je odeslání potvrzovacího e-mailu a přihlášení právě vytvořeného uživatele k webu. Použití ovládacího prvku CreateUserWizard je stejně jednoduché jako přetažení ovládacího prvku CreateUserWizard ze sady nástrojů na stránku a nastavení několika vlastností. Ve většině případů nemusíte psát jediný řádek kódu. Tento šikovný ovládací prvek podrobně prozkoumáme v kroku 6.

Pokud jsou nové uživatelské účty vytvořeny pouze prostřednictvím typické webové stránky Vytvořit účet, je nepravděpodobné, že byste někdy museli napsat kód, který používá metodu CreateUser , protože ovládací prvek CreateUserWizard bude pravděpodobně vyhovovat vašim potřebám. Metoda je však praktická ve scénářích, CreateUser kdy potřebujete vysoce přizpůsobené uživatelské prostředí vytvořit účet nebo když potřebujete programově vytvářet nové uživatelské účty prostřednictvím alternativního rozhraní. Můžete mít například stránku, která uživateli umožňuje nahrát soubor XML, který obsahuje informace o uživateli z jiné aplikace. Stránka může analyzovat obsah nahraného souboru XML a vytvořit nový účet pro každého uživatele zastoupeného v XML voláním CreateUser metody.

Krok 6: Vytvoření nového uživatele pomocí ovládacího prvku CreateUserWizard

ASP.NET se dodává s řadou webových ovládacích prvků pro přihlášení. Tyto ovládací prvky pomáhají v mnoha běžných scénářích souvisejících s uživatelskými účty a přihlášeními. CreateUserWizard ovládací prvek je jedním z takových ovládacích prvků, které jsou navrženy k zobrazení uživatelského rozhraní pro přidání nového uživatelského účtu do rozhraní Členství.

Stejně jako mnoho dalších webových ovládacích prvků souvisejících s přihlášením lze CreateUserWizard použít bez psaní jediného řádku kódu. Intuitivně poskytuje uživatelské rozhraní založené na nastavení konfigurace zprostředkovatele členství a interně volá metodu Membership třídy poté, CreateUser co uživatel zadá potřebné informace a klikne na tlačítko Vytvořit uživatele. Ovládací prvek CreateUserWizard je velmi přizpůsobitelný. Existuje řada událostí, které se aktivují během různých fází procesu vytváření účtu. Podle potřeby můžeme vytvořit obslužné rutiny událostí pro vložení vlastní logiky do pracovního postupu vytváření účtu. Kromě toho je vzhled CreateUserWizard velmi flexibilní. Existuje několik vlastností, které definují vzhled výchozího rozhraní; v případě potřeby lze ovládací prvek převést na šablonu nebo přidat další kroky registrace uživatele.

Začněme tím, že se podíváme na použití výchozího rozhraní a chování ovládacího prvku CreateUserWizard. Pak prozkoumáme, jak přizpůsobit vzhled prostřednictvím vlastností a událostí ovládacího prvku.

Zkoumání výchozího rozhraní a chování CreateUserWizard

Vraťte se na CreatingUserAccounts.aspx stránku ve Membership složce, přepněte do režimu Návrh nebo Rozdělení a pak na začátek stránky přidejte ovládací prvek CreateUserWizard. Ovládací prvek CreateUserWizard je uložen v části Přihlašovací ovládací prvky panelu nástrojů. Po přidání ovládacího prvku nastavte jeho ID vlastnost na RegisterUser. Jak ukazuje snímek obrazovky na obrázku 11, průvodce CreateUserWizard vykreslí rozhraní s textovými poli pro uživatelské jméno, heslo, e-mailovou adresu a bezpečnostní otázku a odpověď nového uživatele.

Ovládací prvek CreateUserWizard vykreslí obecné uživatelské rozhraní pro vytvoření.

Obrázek 11: Ovládací prvek CreateUserWizard vykreslí obecné uživatelské rozhraní pro vytvoření (kliknutím zobrazíte obrázek v plné velikosti)

Pojďme chvíli porovnat výchozí uživatelské rozhraní vygenerované ovládacím prvek CreateUserWizard s rozhraním, které jsme vytvořili v kroku 5. Pro začátek ovládací prvek CreateUserWizard umožňuje návštěvníku zadat bezpečnostní otázku i odpověď, zatímco naše ručně vytvořené rozhraní používalo předdefinovanou bezpečnostní otázku. Rozhraní ovládacího prvku CreateUserWizard obsahuje také ověřovací ovládací prvky, zatímco jsme ještě museli implementovat ověření u polí formuláře našeho rozhraní. A rozhraní ovládacího prvku CreateUserWizard obsahuje textové pole "Potvrdit heslo" (spolu s CompareValidator, aby se zajistilo, že text zadaný do textových polí "Heslo" a "Porovnat heslo" je stejný).

Zajímavé je, že ovládací prvek CreateUserWizard při vykreslování uživatelského rozhraní kontroluje nastavení konfigurace zprostředkovatele členství. Například textová pole bezpečnostních otázek a odpovědí se zobrazí jenom v případě, že requiresQuestionAndAnswer je nastavená hodnota Pravda. Stejně tak CreateUserWizard automaticky přidá ovládací prvek RegularExpressionValidator, který zajistí splnění požadavků na sílu hesla, a nastaví jeho ErrorMessage vlastnosti a ValidationExpression na základě konfiguračních minRequiredPasswordLengthnastavení , minRequiredNonalphanumericCharactersa passwordStrengthRegularExpression .

CreateUserWizard Ovládací prvek, jak jeho název napovídá, je odvozen z ovládacího prvku Wizard. Ovládací prvky průvodce jsou navržené tak, aby poskytovaly rozhraní pro provádění úloh s více kroky. Ovládací prvek Průvodce může mít libovolný počet , WizardStepsz nichž každý je šablona, která definuje ovládací prvky HTML a web pro daný krok. Ovládací prvek Průvodce zpočátku zobrazí první WizardStepspolu s navigačními ovládacími prvky, které uživateli umožňují pokračovat z jednoho kroku na další nebo se vrátit k předchozím krokům.

Jak ukazuje deklarativní kód na obrázku 11, výchozí rozhraní ovládacího prvku CreateUserWizard obsahuje dva WizardSteps:

  • CreateUserWizardStep – vykreslí rozhraní pro shromažďování informací pro vytvoření nového uživatelského účtu. Tento krok je znázorněný na obrázku 11.
  • CompleteWizardStep – zobrazí zprávu s oznámením, že účet byl úspěšně vytvořen.

Vzhled a chování CreateUserWizard lze změnit převodem některého z těchto kroků na šablony nebo přidáním vlastního WizardStepssouboru . Na přidání WizardStep do registračního rozhraní se podíváme v kurzu Ukládání dalších informací o uživateli .

Podívejme se na ovládací prvek CreateUserWizard v akci. Přejděte na CreatingUserAccounts.aspx stránku prostřednictvím prohlížeče. Začněte zadáním některých neplatných hodnot do rozhraní CreateUserWizard. Zkuste zadat heslo, které nevyhovuje požadavkům na sílu hesla, nebo nechte textové pole Uživatelské jméno prázdné. CreateUserWizard zobrazí příslušnou chybovou zprávu. Obrázek 12 ukazuje výstup při pokusu o vytvoření uživatele s nedostatečně silným heslem.

CreateUserWizard automaticky vloží ověřovací ovládací prvky.

Obrázek 12: CreateUserWizard automaticky vloží ověřovací ovládací prvky (kliknutím zobrazíte obrázek v plné velikosti)

Dále zadejte příslušné hodnoty do CreateUserWizard a klikněte na tlačítko Vytvořit uživatele. Za předpokladu, že byla zadána požadovaná pole a síla hesla je dostatečná, CreateUserWizard vytvoří nový uživatelský účet prostřednictvím rozhraní membership a pak zobrazí CompleteWizardSteprozhraní (viz Obrázek 13). CreateUserWizard na pozadí volá metodu Membership.CreateUser , stejně jako jsme to udělali v kroku 5.

Nový uživatelský účet byl úspěšně vytvořen.

Obrázek 13: Nový uživatelský účet byl úspěšně vytvořen (kliknutím zobrazíte obrázek v plné velikosti)

Poznámka

Jak ukazuje obrázek 13, CompleteWizardSteprozhraní obsahuje tlačítko Pokračovat. V tomto okamžiku se však kliknutím provede pouze postback a návštěvník zůstane na stejné stránce. V části "Přizpůsobení vzhledu a chování CreateUserWizard prostřednictvím jeho vlastností" se podíváme na to, jak můžete toto tlačítko poslat návštěvníka na Default.aspx (nebo jinou stránku).

Po vytvoření nového uživatelského účtu se vraťte do sady Visual Studio a prozkoumejte aspnet_Users tabulky a aspnet_Membership jako na obrázku 10, abyste ověřili, že se účet úspěšně vytvořil.

Přizpůsobení chování a vzhledu CreateUserWizard prostřednictvím jeho vlastností

CreateUserWizard lze přizpůsobit různými způsoby prostřednictvím vlastností, WizardStepsa obslužných rutin událostí. V této části se podíváme na to, jak přizpůsobit vzhled ovládacího prvku prostřednictvím jeho vlastností; Další část se zabývá rozšířením chování ovládacího prvku prostřednictvím obslužných rutin událostí.

Prakticky veškerý text zobrazený ve výchozím uživatelském rozhraní ovládacího prvku CreateUserWizard lze přizpůsobit prostřednictvím jeho nepřeberné množství vlastností. Například popisky "Uživatelské jméno", "Heslo", "Potvrdit heslo", "E-mail", "Bezpečnostní otázka" a "Bezpečnostní odpověď" zobrazené nalevo od textových polí lze přizpůsobit vlastnostmi UserNameLabelText, PasswordLabelText, ConfirmPasswordLabelText, EmailLabelTextQuestionLabelText, a AnswerLabelText . Podobně existují vlastnosti pro zadání textu pro tlačítka "Vytvořit uživatele" a "Pokračovat" v CreateUserWizardStep a CompleteWizardStep, stejně jako pokud jsou tato tlačítka vykreslena jako Tlačítka, LinkButtons nebo ImageButtons.

Barvy, ohraničení, písma a další vizuální prvky se dají konfigurovat prostřednictvím řadu vlastností stylu. Samotný ovládací prvek CreateUserWizard má společné vlastnosti stylu webového ovládacího prvku – BackColor, BorderStyle, CssClass, Fonta tak dále – a existuje řada vlastností stylu pro definování vzhledu pro konkrétní části rozhraní CreateUserWizard. VlastnostTextBoxStyle například definuje styly pro textová pole v objektu CreateUserWizardStep, zatímco TitleTextStyle vlastnost definuje styl pro název ("Registrace nového účtu").

Kromě vlastností souvisejících se vzhledem existuje řada vlastností, které ovlivňují chování ovládacího prvku CreateUserWizard. Pokud jeDisplayCancelButton vlastnost nastavená na Hodnotu True, zobrazí tlačítko Zrušit vedle tlačítka Vytvořit uživatele (výchozí hodnota je False). Pokud se zobrazí tlačítko Zrušit, nezapomeňte také nastavit CancelDestinationPageUrl vlastnost , která určuje stránku, na kterou se uživatel odešle po kliknutí na Zrušit. Jak bylo uvedeno v předchozí části, tlačítko Pokračovat v CompleteWizardSteprozhraní způsobí zpětné odeslání, ale ponechá návštěvníka na stejné stránce. Pokud chcete návštěvníka po kliknutí na tlačítko Pokračovat poslat na jinou stránku, jednoduše zadejte adresu URL ve ContinueDestinationPageUrl vlastnosti .

Pojďme aktualizovat RegisterUser ovládací prvek CreateUserWizard tak, aby zobrazoval tlačítko Zrušit a aby se návštěvník Default.aspx při kliknutí na tlačítko Zrušit nebo Pokračovat odeslal na . Chcete-li to provést, nastavte DisplayCancelButton vlastnost na True a CancelDestinationPageUrl vlastnosti a ContinueDestinationPageUrl na "~/Default.aspx". Obrázek 14 ukazuje aktualizovanou aplikaci CreateUserWizard při zobrazení v prohlížeči.

The CreateUserWizardStep Includes a Cancel Button

Obrázek 14: Zahrnuje CreateUserWizardStep tlačítko Zrušit (kliknutím zobrazíte obrázek v plné velikosti)

Když návštěvník zadá uživatelské jméno, heslo, e-mailovou adresu a bezpečnostní otázku a odpověď a klikne na Vytvořit uživatele, vytvoří se nový uživatelský účet a návštěvník se přihlásí jako nově vytvořený uživatel. Za předpokladu, že osoba, která stránku navštěvuje, si vytváří nový účet, se pravděpodobně jedná o požadované chování. Můžete ale správcům povolit přidávání nových uživatelských účtů. Přitom by se vytvořil uživatelský účet, ale správce by zůstal přihlášený jako správce (a ne jako nově vytvořený účet). Toto chování lze změnit prostřednictvím logickéLoginCreatedUser vlastnosti.

Uživatelské účty v rámci členství obsahují schválený příznak. uživatelé, kteří nejsou schváleni, se nemůžou k webu přihlásit. Ve výchozím nastavení je nově vytvořený účet označen jako schválený, což uživateli umožňuje okamžité přihlášení k webu. Je ale možné, že nové uživatelské účty budou označené jako neschválené. Možná chcete, aby správce ručně schválil nové uživatele, než se budou moct přihlásit; nebo možná chcete ověřit platnost e-mailové adresy zadané při registraci, než povolíte přihlášení uživatele. V jakémkoli případě můžete nově vytvořený uživatelský účet označit jako neschválené nastavením vlastnosti ovládacího prvku DisableCreatedUser CreateUserWizard na hodnotu True (výchozí hodnota je False).

Mezi další vlastnosti související s chováním poznámky patří AutoGeneratePassword a MailDefinition. AutoGeneratePassword Pokud je vlastnost nastavená na hodnotu True, CreateUserWizardStep nezobrazí textová pole Heslo a Potvrdit heslo. Místo toho se heslo nově vytvořeného uživatele vygeneruje automaticky pomocí Membership metody třídyGeneratePassword. Metoda GeneratePassword vytvoří heslo o zadané délce a s dostatečným počtem nealfanumerických znaků pro splnění nakonfigurovaných požadavků na sílu hesla.

VlastnostMailDefinition je užitečná, pokud chcete odeslat e-mail na e-mailovou adresu zadanou během procesu vytváření účtu. Vlastnost MailDefinition obsahuje řadu dílčích vlastností pro definování informací o vytvořené e-mailové zprávě. Tyto dílčí vlastnosti zahrnují možnosti, jako jsou Subject, Priority, IsBodyHtml, From, CCa BodyFileName. VlastnostBodyFileName odkazuje na textový soubor nebo soubor HTML, který obsahuje text e-mailové zprávy. Tělo podporuje dva předdefinované zástupné symboly: <%UserName%> a <%Password%>. Tyto zástupné symboly, pokud jsou v BodyFileName souboru, budou nahrazeny jménem a heslem právě vytvořeného uživatele.

Poznámka

Vlastnost CreateUserWizard ovládacího prvku MailDefinition jenom určuje podrobnosti o e-mailové zprávě, která se odešle při vytvoření nového účtu. Neobsahuje žádné podrobnosti o tom, jak je e-mailová zpráva skutečně odeslána (to znamená, jestli se používá server SMTP nebo adresář pro vkládání pošty, jakékoli ověřovací informace atd.). Tyto podrobnosti nízké úrovně je potřeba definovat v oddílu <system.net> v Web.configsouboru . Další informace o těchto nastaveních konfigurace a odesílání e-mailů z ASP.NET 2.0 obecně najdete v nejčastějších dotazech na SystemNetMail.com a v mém článku Odesílání Email v ASP.NET 2.0.

Rozšíření chování CreateUserWizard pomocí obslužných rutin událostí

CreateUserWizard Ovládací prvek vyvolá řadu událostí během jeho pracovního postupu. Když například návštěvník zadá své uživatelské jméno, heslo a další relevantní informace a klikne na tlačítko Vytvořit uživatele, vyvolá ovládací prvek CreateUserWizard svou CreatingUser událost. Pokud během procesu vytváření dojde k problému, CreateUserError událost se aktivuje. Pokud se však uživatel úspěšně vytvoří, CreatedUser událost se vyvolá. K dispozici jsou další události ovládacích prvků CreateUserWizard, které se aktivují, ale jedná se o tři události, které jsou nejvíce německé.

V určitých scénářích můžeme chtít využít pracovní postup CreateUserWizard, což můžeme udělat vytvořením obslužné rutiny události pro příslušnou událost. Pro ilustraci pojďme vylepšit RegisterUser ovládací prvek CreateUserWizard tak, aby zahrnoval vlastní ověření uživatelského jména a hesla. Konkrétně vylepšíme průvodce createuserwizard tak, aby uživatelská jména neobsahovala úvodní ani koncové mezery a uživatelské jméno se v hesle nemohlo objevit. Chceme tedy zabránit tomu, aby si někdo vytvořil uživatelské jméno jako "Scott" nebo aby měl kombinaci uživatelského jména a hesla jako "Scott" a "Scott.1234".

K tomu vytvoříme obslužnou rutinu CreatingUser události, která bude provádět dodatečné ověřovací kontroly. Pokud zadaná data nejsou platná, musíme proces vytváření zrušit. Také musíme na stránku přidat ovládací prvek Label Web, aby se zobrazila zpráva s vysvětlením, že uživatelské jméno nebo heslo je neplatné. Začněte tím, že pod ovládací prvek CreateUserWizard přidáte ovládací prvek Popisek, nastavíte jeho ID vlastnost na InvalidUserNameOrPasswordMessage a jeho ForeColor vlastnost na Red. Vymažte jeho Text vlastnost a nastavte její EnableViewState vlastnosti a Visible na Hodnotu False.

<asp:Label runat="server" id="InvalidUserNameOrPasswordMessage"
     Visible="false" ForeColor="Red" EnableViewState="false">

</asp:Label>

Dále vytvořte obslužnou rutinu události pro událost ovládacího prvku CreatingUser CreateUserWizard. Pokud chcete vytvořit obslužnou rutinu události, vyberte ovládací prvek v Designer a přejděte na okno Vlastnosti. Odtud klikněte na ikonu blesku a poklikáním na příslušnou událost vytvořte obslužnou rutinu události.

Do obslužné rutiny CreatingUser události přidejte následující kód:

protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e)
{
     string trimmedUserName = RegisterUser.UserName.Trim();
     if (RegisterUser.UserName.Length != trimmedUserName.Length)
     {
          // Show the error message
          InvalidUserNameOrPasswordMessage.Text = "The username cannot contain leading or trailing spaces.";
          InvalidUserNameOrPasswordMessage.Visible = true;

          // Cancel the create user workflow
          e.Cancel = true;
     }
     else
     {
          // Username is valid, make sure that the password does not contain the username

          if (RegisterUser.Password.IndexOf(RegisterUser.UserName, StringComparison.OrdinalIgnoreCase) >= 0)
          {
               // Show the error message
               InvalidUserNameOrPasswordMessage.Text = "The username may not appear anywhere in the password.";
               InvalidUserNameOrPasswordMessage.Visible = true;
               // Cancel the create user workflow
               e.Cancel = true;
          }
     }
}

Všimněte si, že uživatelské jméno a heslo zadané do ovládacího prvku CreateUserWizard jsou k dispozici prostřednictvím vlastností UserNameaPassword . Tyto vlastnosti ve výše uvedené obslužné rutině události používáme k určení, jestli zadané uživatelské jméno obsahuje úvodní nebo koncové mezery a jestli se uživatelské jméno nachází v rámci hesla. Pokud je splněna kterákoliv z těchto podmínek, zobrazí se v InvalidUserNameOrPasswordMessage popisku chybová zpráva a vlastnost obslužné rutiny e.Cancel události je nastavená na truehodnotu . Pokud e.Cancel je nastavena na true, CreateUserWizard zkraťuje svůj pracovní postup a v podstatě zruší proces vytváření uživatelských účtů.

Obrázek 15 ukazuje snímek CreatingUserAccounts.aspx obrazovky, kdy uživatel zadá uživatelské jméno s počátečními mezerami.

Uživatelská jména s úvodními nebo koncovými mezerami nejsou povolená.

Obrázek 15: Uživatelská jména s úvodními nebo koncovými mezerami nejsou povolená (kliknutím zobrazíte obrázek v plné velikosti)

Poznámka

Příklad použití události ovládacího prvku CreatedUser CreateUserWizard uvidíme v kurzu Ukládání dalších informací o uživateli.

Souhrn

Metoda Membership třídy CreateUser vytvoří nový uživatelský účet v rozhraní Membership. Dělá to tak, že deleguje volání nakonfigurovaného zprostředkovatele členství. V případě SqlMembershipProviderCreateUser přidá metoda záznam do databázových aspnet_Users tabulek a aspnet_Membership .

Nové uživatelské účty je sice možné vytvářet programově (jak jsme viděli v kroku 5), ale rychlejší a jednodušší je použít ovládací prvek CreateUserWizard. Tento ovládací prvek vykreslí vícekrokové uživatelské rozhraní pro shromažďování informací o uživateli a vytvoření nového uživatele v rámci členství. Na pozadí tento ovládací prvek používá stejnou Membership.CreateUser metodu jako v kroku 5, ale tento ovládací prvek vytvoří uživatelské rozhraní, ověřovací ovládací prvky a reaguje na chyby při vytváření uživatelského účtu, aniž by musel psát kód.

V tomto okamžiku máme k dispozici funkci pro vytváření nových uživatelských účtů. Přihlašovací stránka se ale stále ověřuje pomocí pevně zakódovaných přihlašovacích údajů, které jsme zadali v druhém kurzu. V dalším kurzu provedeme aktualizaciLogin.aspx, abychom ověřili přihlašovací údaje zadané uživatelem v rámci členství.

Všechno nejlepší na programování!

Další čtení

Další informace o tématech probíraných v tomto kurzu najdete v následujících zdrojích informací:

O autorovi

Scott Mitchell, autor několika knih o ASP/ASP.NET a zakladatel 4GuysFromRolla.com, pracuje s webovými technologiemi Microsoftu od roku 1998. Scott pracuje jako nezávislý konzultant, školitel a spisovatel. Jeho nejnovější kniha je Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Scotta můžete zastihnout na adrese mitchell@4guysfromrolla.com nebo prostřednictvím svého blogu na adrese http://ScottOnWriting.NET.

Zvláštní poděkování...

Tato série kurzů byla zkontrolována mnoha užitečnými recenzenty. Hlavní revidující pro tento kurz byla Teresa Murphyová. Chtěli byste si projít své nadcházející články na webu MSDN? Pokud ano, dejte mi řádek na mitchell@4GuysFromRolla.com.