Wir bauen derzeit Architektur für Thin-Client-Buchhaltungsanwendungen. Es sollte zwei Hauptanforderungen folgen:
Wir denken, Asp.NET MVC 3 ist eine geeignete Plattform für diese Aufgabe. Für die Verwaltung von Anwendungsdaten haben wir uns für die neueste Version von Entity Framework entschieden - die Menge an Datenprovidern und die Funktion Code First können uns viel Zeit sparen.
Der Teil, mit dem wir uns befassen, ist das Benutzer / Rollen-Management-System. Wir sollten eine Art von Global Administration-Sektion haben, um Benutzer hinzuzufügen und ihnen Zugriff auf Module zu geben (nur globale Administratoren können dem System Benutzer hinzufügen, keine "Typ von Straße" -Registrierung wird unterstützt) und jedes Modul hat seinen eigenen Administrationsbereich mit eigenen Admins und Rollen. Wir haben bereits ein Datenmodell, um alles, was wir brauchen, in geeigneter Weise zu speichern, haben aber keine Ahnung, wie wir von der Anwendung aus auf diese Daten zugreifen können.
Derzeit sehen wir zwei mögliche Wege, um dieses Problem zu lösen:
Beide Wege sind nicht elegant und nicht offensichtlich für uns und es ist keine einfache Frage, welche Art und Weise zu wählen. Wir glauben auch, dass es eine andere Lösung sein kann (von Grund auf kann Architektur betroffen sein). Wir würden uns freuen, Vorschläge zu diesem Problem zu sehen.
Nun, endlich haben wir beschlossen, alles von Grund auf neu zu schreiben und es war einfacher, dass es so zu sein schien
Es war überhaupt nicht schwer. Jetzt haben wir alle Flexibilität, die wir wollten. Keine Anbieter beteiligt.
Ich würde persönlich empfehlen, den Standard-Mitgliedschaftsanbieter zu verwenden, um Benutzer zu erstellen und zu authentifizieren, und wenn Sie sich vergewissert haben, dass der Benutzer nicht nur ein "Typ von der Straße" ist, verwenden Sie Ihre eigene benutzerdefinierte Architektur Überprüfen, ob der authentifizierte Benutzer Zugriff auf den Controller und die Aktion hat, auf die er zugreifen möchte.
Der integrierte Mitgliedschaftsprovider kümmert sich um viele Nuancen in Bezug auf Benutzerauthentifizierung, Passwortspeicherung und dergleichen. Es verwendet Best Practices, um Brute-Force-Angriffe, Rainbow-Table-Angriffe usw. zu vermeiden. Es ist erprobt und wahr.
Es klingt jedoch so, als ob Ihre Berechtigungsstruktur pro Modul der Form der ASP.NET-Rollenanbieter entspricht. Wenn das der Fall ist, ist das gut und schön, und es wäre eine gute Idee, einen benutzerdefinierten Rollenanbieter zu implementieren. Aber wenn Ihre Anforderungen "out of the box" sind, werden Sie wahrscheinlich besser dran sein, indem Sie die Rechte an dem für Sie am besten geeigneten Punkt manuell überprüfen (Controller, Aktion, Anforderungsfilter, etc.).
- Um benutzerdefinierte Mitgliedschafts- und Rollenanbieter basierend auf unserer DAL zu schreiben. Niemand aus unserem Team hat das schon einmal gemacht, also sind wir uns nicht sicher, ob dies der Fall ist es lohnt sich die Mühe. Mitgliedschaftsanbieter kann nicht so viel anbieten Flexibilität, wie es die Anwendung benötigt, so dass einige Crunches benötigt werden.
Es lohnt sich sehr, wenn die Standardfunktionen nicht die Funktionalität bieten, die Sie benötigen. Wenn Sie bereits ein komplexes Benutzersystem in Ihrer Datenbank haben, ist wahrscheinlich ein benutzerdefinierter Mitgliedschaftsanbieter eine gute Idee.
Sie werden Ihrem Team wertvolle Erfahrungen hinzufügen, und Sie sollten in der Lage sein, einen Großteil des Codes in Ihrem nächsten Projekt wiederzuverwenden. Wie @Randolf sagte, gibt es viele gute Ressourcen für den Aufbau eines Kundenmitgliedschaftsanbieters, und ich spreche von etwas Erfahrung, wenn ich sage, dass es wirklich nicht so schwierig ist. Alles ist da, Sie müssen nur einige Methoden implementieren.
Tags und Links asp.net-mvc-3 c# asp.net security membership-provider