Teil 7: Mitgliedschaft und Autorisierung
von Jon Galloway
Der MVC Music Store ist eine Tutorialanwendung, die schrittweise erläutert, wie ASP.NET MVC und Visual Studio für die Webentwicklung verwendet werden.
Der MVC Music Store ist eine einfache Beispielspeicherimplementierung, die Musikalben online verkauft und grundlegende Websiteverwaltung, Benutzeranmeldung und Warenkorbfunktionen implementiert.
In dieser Tutorialreihe werden alle Schritte zum Erstellen der ASP.NET MVC Music Store-Beispielanwendung beschrieben. Teil 7 behandelt Mitgliedschaft und Autorisierung.
Unser Store Manager-Controller ist derzeit für jeden zugänglich, der unsere Website besucht. Ändern Wir dies, um die Berechtigung auf Websiteadministratoren einzuschränken.
Hinzufügen von AccountController und Ansichten
Ein Unterschied zwischen der vollständigen vorlage ASP.NET MVC 3-Webanwendung und der vorlage ASP.NET leeren MVC 3-Webanwendung besteht darin, dass die leere Vorlage keinen Kontocontroller enthält. Wir fügen einen Kontocontroller hinzu, indem wir einige Dateien aus einer neuen ASP.NET MVC-Anwendung kopieren, die aus der vollständigen vorlage ASP.NET MVC 3-Webanwendung erstellt wurde.
Erstellen Sie eine neue ASP.NET MVC-Anwendung mithilfe der vollständigen vorlage ASP.NET MVC 3-Webanwendung, und kopieren Sie die folgenden Dateien in die gleichen Verzeichnisse in unserem Projekt:
- Kopieren Von AccountController.cs in das Verzeichnis Controllers
- Kopieren von AccountModels in das Verzeichnis Models
- Erstellen Sie ein Kontoverzeichnis im Verzeichnis Views, und kopieren Sie alle vier Ansichten in
Ändern Sie den Namespace für die Controller- und Model-Klassen, sodass sie mit MvcMusicStore beginnen. Die AccountController-Klasse sollte den MvcMusicStore.Controllers-Namespace und die AccountModels-Klasse den MvcMusicStore.Models-Namespace verwenden.
Hinweis: Diese Dateien sind auch im MvcMusicStore-Assets.zip Download verfügbar, aus dem wir unsere Websiteentwurfsdateien zu Beginn des Tutorials kopiert haben. Die Mitgliedschaftsdateien befinden sich im Verzeichnis Code.
Die aktualisierte Lösung sollte wie folgt aussehen:
Hinzufügen eines Administratorbenutzers mit dem ASP.NET-Konfigurationsstandort
Bevor wir die Autorisierung auf unserer Website benötigen, müssen wir einen Benutzer mit Zugriff erstellen. Die einfachste Möglichkeit zum Erstellen eines Benutzers ist die Verwendung der integrierten ASP.NET-Konfigurationswebsite.
Starten Sie die ASP.NET-Konfigurationswebsite, indem Sie auf das Symbol in der Projektmappen-Explorer klicken.
Dadurch wird eine Konfigurationswebsite gestartet. Klicken Sie auf dem Startbildschirm auf die Registerkarte Sicherheit, und klicken Sie dann in der Mitte des Bildschirms auf den Link "Rollen aktivieren".
Klicken Sie auf den Link "Rollen erstellen oder verwalten".
Geben Sie "Administrator" als Rollennamen ein, und klicken Sie auf die Schaltfläche Rolle hinzufügen.
Klicken Sie auf die Schaltfläche Zurück, und klicken Sie dann auf der linken Seite auf den Link Benutzer erstellen.
Füllen Sie die Benutzerinformationsfelder auf der linken Seite mit den folgenden Informationen aus:
Feld | Wert |
---|---|
Benutzername | Administrator |
Kennwort | password123! |
Kennwort bestätigen | password123! |
(Jede E-Mail-Adresse funktioniert) | |
Sicherheitsfrage | (ganz nach Belieben) |
Sicherheitsantwort | (ganz nach Belieben) |
Hinweis: Sie können natürlich ein beliebiges Kennwort verwenden. Die Standardmäßigen Kennwortsicherheitseinstellungen erfordern ein Kennwort, das 7 Zeichen lang ist und ein nicht alphanumerisches Zeichen enthält.
Wählen Sie die Rolle Administrator für diesen Benutzer aus, und klicken Sie auf die Schaltfläche Benutzer erstellen.
An diesem Punkt sollte eine Meldung angezeigt werden, die angibt, dass der Benutzer erfolgreich erstellt wurde.
Sie können jetzt das Browserfenster schließen.
Rollenbasierte Autorisierung
Jetzt können wir den Zugriff auf den StoreManagerController mithilfe des [Authorize]-Attributs einschränken und angeben, dass der Benutzer in der Administratorrolle sein muss, um auf eine Controlleraktion in der Klasse zugreifen zu können.
[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
// Controller code here
}
Hinweis: Das Attribut [Authorize] kann sowohl für bestimmte Aktionsmethoden als auch auf Controllerklassenebene platziert werden.
Beim Navigieren zu /StoreManager wird nun ein Anmeldedialogfeld angezeigt:
Nachdem Sie sich mit unserem neuen Administratorkonto angemeldet haben, können Sie wie zuvor zum Bildschirm Albumbearbeitung wechseln.