Ich habe einige Code verwendet, um festzustellen, ob ein Benutzer angemeldet ist, und ich möchte dies auf jeder Seite in einer ASP.NET-Website, so dass nur angemeldete Benutzer können es anzeigen. Das Problem besteht darin, dass die Website in mehrere Projekte/Lösungen aufgeteilt ist, so dass es schwierig sein könnte, den einzelnen Code zu behalten.Wo Authentifizierungsprüfung in ASP.NET
Ich dachte, ich könnte eine Klasse erstellen, die für System.Web.UI.Page
erbt und überschreibt Page_Init
, aber das würde erfordern alle Seiten ändern, so dass sie von neuen neuen Klasse erben. Ich denke auch nicht, dass dies projektübergreifend funktionieren wird.
Also dachte ich mir das Problem von einer anderen Seite zu nähern: mit AOP. Ich habe Aspects vorher noch nie benutzt, aber es sieht so aus, als könnte ich PostSharp verwenden, um einen Aspekt zu schreiben, der Code vor jedem Page_Init
(oder vielleicht Page_Load
?) Injiziert. Dies könnte als eine schnelle Lösung funktionieren, aber ich könnte Probleme bekommen, wenn ich eine Seite brauche, um die Authentifizierungsprüfung nicht durchzuführen (verfügbar für alle).
Nur um zu klären, habe ich bereits eine Login-Lösung; Ich suche nur nach einem Login auf jeder Seite.
Warum verwenden Sie nicht einen ['MembershipProvider'] (http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx)? Dies alles wurde von ASP.NET für Sie erledigt. – jrummell
Im Allgemeinen sollten ASP.NET-Seiten auf einer Masterseite erstellt werden, auf der gemeinsamer Code zentralisiert ist, einschließlich der Anmeldeprüfung. Sie könnten 2 Masterseiten erstellen, eine, die darauf prüft, und eine, die dies nicht tut. – MarioDS
@jrummell das ist nicht flexibel genug. In realen Projekten kann man nicht auf Mitgliedschaftsprovider gehen, wenn man nach anpassbaren Projekten sucht. Recht? – Pankaj