Bygg en enkel inloggning med .NET

by Reager 9. August 2007 20:25

Att bygga inloggning är något som man alltid får göra, och i .NET så har det blivit enklare än någonsin. Jag
tänkte här visa det allra enklaste exemplet på hur man implementerar Forms Authentication på sin webbplats.

Börja med att skapa ett nytt Webb-projekt, och de filer som skall finnas i det är
default.aspx, login.aspx samt web.config. För att skapa de filer som inte skapas
automatiskt med projektet så högerklickar du på ditt projekt och väljer "Add new item".

Börja med att öppna din web.config-fil. Om den har något innehåll så letar du upp
raden som börjar med <authentication... och ändrar denna till mode="forms"

  1. <authentication mode="Forms">

Nästa steg är att lägga till elementet <forms> mellan <authentication> </authentication> är
sätta några attribut

  1. <forms name="aspdotnet" path="/" loginUrl="login.aspx" protection="All" timeout="30">

Attribut

Beskrivning

Name

Detta är namnet på den Cookie som skapas

Path

Sökvägen som används för Cookien

LoginUrl

Den URL som man skickas till om man inte är behörig.

Protection

Vilken metod som skall användas för att skydda cookie-datan.

Timeout

Antal minuter tills Cookien "går ut" och blir ogiltig.

Inom <forms></forms> ska vi nu lägga våra inloggningsuppgifter. Detta är det enklaste sättet,
och fungerar bra om det bara är ett fåtal personer som skall ha tillgång till sidan.

  1. <credentials passwordFormat="Clear">
  2.             <user name="Reager" password="reager" />
  3. </credentials>

Vi talar här om att lösenordet sparas i klartext, och att det finns en användare med användarnamnet "Reager", och lösenordet
"reager". Det går här bra att lägga till flera <user>-element om man är flera användare som skall ha olika inloggningsuppgifter.
Nästa steg är att tala om att ingen har rätt att se något innehåll på sidan om man inte har loggat in.

  1. <authorization>
  2.         <deny users="?" />
  3. </authorization>

?-tecknet betyder att vi inte vill släppa in några anonyma/ej inloggade personer. Vill vi spärra för alla byter vi ut ? mot *

Det var allt som skall finnas i vår web.config. Gå nu till login.aspx och dra ut txå textbox-kontroller och en button-kontroll

  1. <asp:TextBox runat="server" ID="txbUsername"></asp:TextBox>
  2. <br />
  3. <asp:TextBox runat="server" ID="txbPassword" TextMode="password"></asp:TextBox>
  4. <br />
  5. <asp:Button runat="server" ID="btnLogin" OnClick="btnLogin_Click" Text="Logga In" />

Gå sedan till kodläget för login.aspx, dit kommer du genom att högerklicka i source-läget och välja View code. Vi ska nu tala om vad som skall hända när vi trycker på knappen.

  1. if (FormsAuthentication.Authenticate(txbUsername.Text, txbPassword.Text)) 
  2.           FormsAuthentication.RedirectFromLoginPage(txbUsername.Text, false);
  3. else
  4.           Response.Write("Felaktig inloggning");

Vi anropas FormsAuthentication.Authenticate, vilket är en inbyggd metod och skickar med det angivna användarnamnet och lösenordet
och detta valideras sedan automatiskt mot de credentials som vi angav i web.config. Stämmer de så skickas vi vidare till den sida vi
försökte besöka när vi blev blockade, annars så skrivs ett kort meddelande ut. false RedirectFromLoginPage innebär att vi inte vill
spara cookien, utan den ska dö när våran timeout har uppnåtts. Ändras denna till true så loggas vi inte ut automatiskt.

Det sista vi ska göra innan vi kan provköra vårat projekt är att öppna default.aspx i Source-läge, och där dra ut en LoginStatus-kontroll.
Denna gör så att vi på ett enkelt sätt kan logga ut genom att automatiskt skapa en logout-knapp.

Detta var Forms Authentication lite snabbt.

Läs mer:
http://msdn2.microsoft.com/en-us/library/aa480476.aspx

Script: http://aspdotnet.nu/upload/script/FormsAuth.rar

Tags: , , ,

ASP.NET | C# | Säkerhet | Artikel

Comments

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

RecentComments

Comment RSS