Vytváření uživatelských účtů (C#)
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:
- 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 atributumode
elementu<authentication>
naForms
. 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. - 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. - 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íhoLocalSqlServer
ř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.
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
.
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.
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.
Přidání Two-Level seznamu odkazů v levém sloupci
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 .
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
.
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 FormsAuthenticationModule
CustomPrincipal
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ů:
CreateUser(username, password)
CreateUser(username, password, email)
CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, MembershipCreateStatus)
CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, MembershipCreateStatus)
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á naPassword
- Textové pole s názvem
Email
- Popisek s názvem
SecurityQuestion
sText
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
sText
vymazanou vlastností
V tomto okamžiku by měla obrazovka vypadat podobně jako na obrázku 6.
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 passwordQuestion
a 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 CreateAccountButton
udá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 . Success
Na 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í CreateUser
příkazu se předáním switch
použije příkaz k výstupu příslušné zprávy v createStatus
zá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).
Obrázek 7: Nový uživatelský účet se úspěšně vytvořil (kliknutím zobrazíte obrázek v plné velikosti)
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)
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.
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í , AspNetSqlMembershipProvider
který 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.
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 minRequiredPasswordLength
nastavení , minRequiredNonalphanumericCharacters
a 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 , WizardSteps
z 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í WizardStep
spolu 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 WizardSteps
souboru . 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.
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í CompleteWizardStep
rozhraní (viz Obrázek 13). CreateUserWizard na pozadí volá metodu Membership.CreateUser
, stejně jako jsme to udělali v kroku 5.
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, CompleteWizardStep
rozhraní 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í, WizardSteps
a 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
, EmailLabelText
QuestionLabelText
, 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
, Font
a 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 CompleteWizardStep
rozhraní 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.
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
, CC
a 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.config
souboru . 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í UserName
aPassword
. 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 true
hodnotu . 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.
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ě SqlMembershipProvider
CreateUser
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í:
CreateUser
Technická dokumentace- Přehled ovládacího prvku CreateUserWizard
- Vytvoření souboru System-Based zprostředkovatele mapy webu
- Vytvoření podrobného uživatelského rozhraní pomocí ovládacího prvku průvodce ASP.NET 2.0
- Zkoumání navigace na webu ASP.NET 2.0
- Stránky předlohy a navigace na webu
- Zprostředkovatel mapy webu SQL, na který jste čekali
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.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro