Tento článok demonštruje, ako implementovať základe formulárov
overovanie pomocou databázy pre ukladanie užívateľom.
Požiadavky
Nasledujúci zoznam popisuje Odporúčaný hardvér, softvér,
sieťovej infraštruktúry a balíky service pack, ktoré potrebujete:
Microsoft Visual Studio .NET
Microsoft Internet Information Services (IIS) verzie 5.0
alebo novší
Microsoft SQL Server
Vytvoriť ASP.NET aplikáciu pomocou C# .NET
Otvorené Visual Studio .NET.
Vytvoriť novú aplikáciu ASP.NET Web, a uveďte názov
a umiestnenie.
V súbore Web.config nakonfigurovať nastavenia zabezpečenia
Táto časť ukazuje, ako pridať a upraviť <authentication></authentication> a <authorization></authorization> konfigurácie sekcie nakonfigurovať ASP.NET aplikácie
používať overovanie na základe formulárov.
V roztoku Explorer, otvorte súbor Web.config.
Zmeniť režim overovania formulárov.
Vložte značku <Forms>a vyplňte príslušné
atribúty. (Ďalšie informácie o týchto atribútov označovať MSDN
dokumentáciu alebo QuickStart dokumentácie, ktoré je uvedené v
</Forms>REFERENCIE oddiel) Kópia
nasledujúci kód a potom kliknite Prilepiť ako HTML naUpraviť menu vložiť kód v <authentication></authentication> súboru:
Vytvorte tabuľku databázy vzorky na obchod užívateľov Podrobnosti
Táto sekcia demonštruje ako vytvoriť ukážkovú databázu na
uložiť užívateľské meno, heslo a úlohu pre používateľov. Potrebujete stĺpce Rola
Ak chcete uložiť roly používateľov v databáze a implementovať role-based
zabezpečenia.
Na Štart menu, kliknite na tlačidloSpustiť, a potom zadajte Poznámkový blok otvoriť
Poznámkový blok.
Zvýraznite nasledujúci kód skriptu SQL, kliknite pravým tlačidlom myši
kód, a potom kliknite na Kópia. V programe Poznámkový blok, kliknitePasta na Upraviť menu vložiť nasledujúce
kód:
if exists (select * from sysobjects where id =
object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Users]
GO
CREATE TABLE [dbo].[Users] (
[uname] [varchar] (15) NOT NULL ,
[Pwd] [varchar] (25) NOT NULL ,
[userRole] [varchar] (25) NOT NULL ,
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Users] WITH NOCHECK ADD
CONSTRAINT [PK_Users] PRIMARY KEY NONCLUSTERED
(
[uname]
) ON [PRIMARY]
GO
INSERT INTO Users values('user1','user1','Manager')
INSERT INTO Users values('user2','user2','Admin')
INSERT INTO Users values('user3','user3','User')
GO
Súbor uložte ako Users.sql.
Na počítači Microsoft SQL Server, otvorte Users.sql v
Analyzátor dotazu. Zo zoznamu databáz, kliknite krčmy, a
Spustite skript. To vytvára vzorka užívateľov tabuľku a osadí tabuľke v
Krčmy databáza sa použije aplikáciou tejto vzorky.
Vytvoriť stránku Logon.aspx
Pridať nový webový formulár do projektu s názvom
Logon.aspx.
Otvorte Logon.aspx stránku v editore a prepnúť do HTML
Zobraziť.
Skopírujte nasledujúci kód a použitie Prilepiť ako
HTML možnosť na Upraviť menu vložiť kód
medzi<form>Tagy: </form>
Tento webový formulár sa používa na prezentovanie prihlasovací formulár používateľom, aby mohli
poskytovať svoje užívateľské meno a heslo na prihlásenie do aplikácie.
Prepnúť do návrhového zobrazenia a uložte stránku.
Kódu obsluhy udalostí tak, aby sa to overuje používateľské poverenia
Táto sekcia predstavuje kód, ktorý je umiestnený v code-behind
stránke (Logon.aspx.cs).
Dvakrát kliknite na Prihlásenie otvoriť
Logon.aspx.cs súbor.
Importovať požadované priestory názvov v súbore kód pozadu:
using System.Data.SqlClient;
using System.Web.Security;
Vytvoriť ValidateUser funkcia na overenie používateľských poverení pri pohľade
databáza. (Uistite sa, že zmeniť reťazec pripojenia k bodu na vaše
Databáza).
private bool ValidateUser( string userName, string passWord )
{
SqlConnection conn;
SqlCommand cmd;
string lookupPassword = null;
// Check for invalid userName.
// userName must not be null and must be between 1 and 15 characters.
if ( ( null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) )
{
System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." );
return false;
}
// Check for invalid passWord.
// passWord must not be null and must be between 1 and 25 characters.
if ( ( null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) )
{
System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed." );
return false;
}
try
{
// Consult with your SQL Server administrator for an appropriate connection
// string to use to connect to your local SQL Server.
conn = new SqlConnection( "server=localhost;Integrated Security=SSPI;database=pubs" );
conn.Open();
// Create SqlCommand to select pwd field from users table given supplied userName.
cmd = new SqlCommand( "Select pwd from users where uname=@userName", conn );
cmd.Parameters.Add( "@userName", SqlDbType.VarChar, 25 );
cmd.Parameters["@userName"].Value = userName;
// Execute command and fetch pwd field into lookupPassword string.
lookupPassword = (string) cmd.ExecuteScalar();
// Cleanup command and connection objects.
cmd.Dispose();
conn.Dispose();
}
catch ( Exception ex )
{
// Add error handling here for debugging.
// This error message should not be sent back to the caller.
System.Diagnostics.Trace.WriteLine( "[ValidateUser] Exception " + ex.Message );
}
// If no password found, return false.
if ( null == lookupPassword )
{
// You could write failed login attempts here to event log for additional security.
return false;
}
// Compare lookupPassword and input passWord, using a case-sensitive comparison.
return ( 0 == string.Compare( lookupPassword, passWord, false ) );
}
Môžete použiť jeden z dvoch metód pre generovanie formulárov
overovania cookie a presmerovať užívateľa na príslušnú stránku v prípade cmdLogin_ServerClick . Ukážkový kód je k dispozícii pre oba scenáre. Použiť niektorú z
ne podľa vašej požiadavky.
Volať metódu RedirectFromLoginPage automaticky generovať formy overovania cookie
a presmerovať užívateľa na príslušnú stránku v cmdLogin_ServerClick udalosti:
Generovať overovania lístok, zašifrujte vytvorený súbor, vytvoriť
cookie, pridať k odpovedi, a presmerovať užívateľa. To vám dáva viac
ovládanie v ako vytvárať cookie. Môžete pridať aj vlastné údaje pozdĺž
s FormsAuthenticationTicket v tomto prípade.
private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
{
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
if (chkPersistCookie.Checked)
ck.Expires=tkt.Expiration;
ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
string strRedirect;
strRedirect = Request["ReturnUrl"];
if (strRedirect==null)
strRedirect = "default.aspx";
Response.Redirect(strRedirect, true);
}
else
Response.Redirect("logon.aspx", true);
}
Uistite sa, že sa pridáva tento kód do InitializeComponent metóda v kóde, ktorý generuje návrhár formulára Web:
this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);
Vytvoriť Default.aspx stránku
Táto sekcia vytvorí skúšobnú stranu na ktorú používatelia budú presmerovaní
po ich overenie. Keď používatelia prehľadávajú na túto stránku bez prvého prihlásenia
k aplikácii, oni sú presmerovaní na stránku prihlásenia.
Premenovať existujúci WebForm1.aspx stránky ako napríklad Default.aspx, a
otvorenie v editore.
Prepnite na zobrazenie HTML, a skopírujte nasledujúci kód medzi
The<form>Tagy: </form>
Uistite sa, že sa pridáva tento kód do InitializeComponent metóda v kóde, ktorý generuje návrhár formulára Web:
this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);
Uložiť a zostaviť projekt. Teraz môžete použiť
aplikácia.
Ďalšie poznámky
Možno budete chcieť ukladať heslá bezpečne v databáze. Ste
môžete použiť FormsAuthentication trieda utility funkcie vymenoval HashPasswordForStoringInConfigFile pre šifrovanie hesiel, predtým, než si ich uložiť do databázy alebo
konfiguračný súbor.
Možno budete chcieť uložiť informácie o pripojení SQL v
konfiguračný súbor (Web.config) tak, že si môžete ľahko zmeniť, ak
potrebné.
Môžete zvážiť pridanie kódu pre prevenciu hackerov, ktorí sa snažia
používať rôzne kombinácie hesiel v prihlásení. Napríklad, môžete
zahŕňajú logické, že akceptuje iba dva alebo tri pokusy o prihlásenie. Ak používateľ nemôže
Prihláste sa určitom počte pokusov, možno budete chcieť nastaviť príznak
Databáza neumožňuje daného používateľa o prihlásenie, kým používateľ re-enables svojho
účet tým, že navštívite inú stránku alebo volajúceho podporu. V
Navyše, mali by ste pridať vhodné chyba manipulácia kdekoľvek
potrebné.
Pretože používateľ je určený na overovanie
cookie, možno budete chcieť použiť Secure Sockets Layer (SSL) na túto aplikáciu tak
že nikto môže klamať overovacím súborom cookie a iné cenné
informácie, ktoré sú prenášané.
Overovanie na základe formulárov vyžaduje, aby váš klient
alebo povoliť cookies vo svojom prehliadači.
Parameter časového limitu<authentication></authentication> časti Konfigurácia určuje interval, v ktorom
overovacím súborom cookie sa regeneruje. Môžete si vybrať hodnotu, ktorá poskytuje
lepší výkon a bezpečnosť.
Určitým, sprostredkujúca proxy a cache na internete môže
cache Web server odpovedí, ktoré obsahujú hlavičky súboru Cookie, ktoré sú potom
vrátil iný používateľ. Pretože používa súbor cookie aj overovanie na základe formulárov
na overenie používateľov, to môže spôsobiť používateľom náhodne (alebo úmyselne)
zosobnenie iný používateľ dostane cookie z sprostredkovateľské proxy alebo
cache, ktoré bolo pôvodne určené pre nich.
Ďalšie informácie o tom, ako realizovať jednoduché
overovanie na základe formulárov, ktorý používa <credentials></credentials> oddiel na ukladanie používatelia a heslá, odkazovať na nasledujúce
GotDotNet ASP.NET QuickStart vzorky:
Ďalšie informácie o implementovaní základe formulárov
overovania, ktorý používa XML súbor na ukladanie používatelia a heslá, označovať
Nasledujúca téma v .NET Framework Software Development Kit (SDK)
dokumentácia:
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 301240