Ich erstelle meine eigene Website und Blog und ich möchte für das erste Mal nur ich in der Datenbank (mein Name und Passwort) und vielleicht später einige Registrierung für andere, aber zuerst nur für mich einloggen und Verwaltung mit Genehmigung. Ich möchte keine Mitgliedschaft von MS verwenden. Ich möchte versuchen, mein eigenes von Anfang an zu erstellen, also suche ich einen Führer für Anfänger, aber ich fand große Führer mit Rollen, Rechten. Ich möchte nur kleines Beispiel mit check username, Passwort in der Datenbank mit Anmeldedaten. Danke für die Hilfe LiborASP.NET MVC benutzerdefinierte Mitgliedschaft für Anfänger
Antwort
Auch wenn Sie nicht wollen, die Mitgliedschaft und Rollenanbieter Datenspeicher verwenden Sie die Authentifizierung noch nutzen können. Vertrau mir, es ist viel einfacher als deine eigene zu bauen. Und so funktioniert es:
Wir sagen, Sie haben bereits Ihre Benutzerspeichereinrichtung eingerichtet, um den Benutzernamen und das Passwort abzurufen. Der Einfachheit halber stelle ich vor, dass Sie eine statische Klasse namens DataLayer haben, die Ihre Datenabrufmethoden zum Abrufen von Informationen aus der Datenbank (oder dem von Ihnen verwendeten Speicher) enthält.
Zuerst müssen Sie sich anmelden, damit sich der Benutzer anmelden kann. Richten Sie also eine Seite mit Feldern für Benutzername und Passwort ein. Dann in der Aktion-Methode, die die Seite entsendet einen schnell aufgebaut if-Anweisung:
if (DataLayer.UserExists(userModel.Username))
{
User userFromDB = DataLayer.GetUser(userModel.Username);
if (userFromDB.Password == userModel.Password)
{
FormsAuthentication.SetAuthCookie(userFromDB.Username, checkBoxRememberMe.Checked);
//Use userFromDB as the username to authenticate because it will
//preserve capitalization of their username the way they entered it
//into the database; that way, if they registered as "Bob" but they
//type in "bob" in the login field, they will still be authenticated
//as "Bob" so their comments on your blogs will show their name
//the way they intended it to.
return "Successfully logged in!";
}
}
return "Invalid username or password.";
Jetzt, wo sie authentifiziert sind Sie nur Page.User.Identity.IsAuthenticated in Ihrem Code verwenden können, um herauszufinden, ob sie angemeldet sind in dir auch gefallen:.
if (User.Identity.IsAuthenticated)
{
DataLayer.PostBlogComment(User.Identity.Name, commentBody);
//Then in your controller that renders blog comments you would obviously
//have some logic to get the user from storage by the username, then pull
//their avatar and any other useful information to display along side the
//blog comment. This is just an example.
}
Darüber hinaus können Sie ganze Aktionsmethoden oder sogar ganze Controller Benutzer sperren, die durch den Formularauthentifizierungsanbieter authentifiziert werden. Alles, was Sie tun müssen, ist Tags wie diese Aktionsmethoden/Controller hinzufügen:
[Authorize]
public ActionResult SomeActionMethod()
{
return View();
}
Das [Authorize]
Attribut verhindert, dass Benutzer, die den Zugriff auf diese Aktion Verfahren nicht eingeloggt sind, und es wird sie auf Ihre Login-Seite umleiten. Sie können dieses Attribut zum Ausfiltern von Rollen verwenden, wenn Sie den integrierten Rollenanbieter verwenden.
[Authorize(Roles="Admin, SalesReps")]
public ActionResult SomeActionMethod()
{
return View();
}
Diese Attribute können auch oberhalb der Controller-Klasse hinzugefügt werden, um ihre Logik auf den gesamten Controller anzuwenden.
EDIT: Um einen Benutzer ausloggen alles, was Sie tun müssen, ist anrufen FormsAuthentication.SignOut();
Hey @Bibo, gut für die Auswahl der Mitgliedschaft Anbieter. Ich denke, ein UserService oder ähnliches, der Methoden zum Erstellen, Authentifizieren von Benutzern und einigen wenigen anderen Methoden bietet, sollte ausreichen. Als Vorschlag, benutze Passwort Hashing und ein Passwort Salz für das Passwort des Benutzers. Here ist ein guter Link zum Betrachten. Siehe auch this answer Ich gab vor einiger Zeit.
Viel Glück!
EDIT: Der rememberMe-Parameter sollte stattdessen keepMeSignedIn benannt werden.
Danke für asnwer, aber ich kann nichts finden, was mir helfen kann. Kannst du einen Artikel darüber verlinken? –
CodeCampServer http://codecampserver.codeplex.com/ ist eine Beispielanwendung, die implementiert, was Sie suchen. – uvita
Dieser Artikel zur Formularauthentifizierung bietet Ihnen viele Informationen zum Erstellen Ihres eigenen einfachen Sicherheitssystems, insbesondere das Bit zu FormsAuthenticationTicket.
Hallo, Sie haben bereits einen Weg gewählt, um die Datenbank zu gehen? (Entity Framework, linq2sql, ado.net?) – Michel