2009-04-28 6 views
1
  • Ich habe eine asp.net-Webanwendung.
  • Es verwendet zwei Mitgliedschaftsanbieter.
  • Zwei Anmeldeseiten eine für jeden Anbieter. Jetzt
  • ich habe zwei Ordner im root Folder1 & Folder2
  • Folder1 verwendet 1. Mitgliedschaft Anbieter
  • Folder2 verwendet 2. Mitgliedschaft Anbieter

Ich habe fast alles, einschließlich signin arbeiten, Benutzer usw. in beiden Anbieter erstellen. Nur Problem ist in Form Authentifizierung ich kann nur einen loginpath definieren. Wenn die Sitzung abläuft oder Sie sich anmelden müssen, um auf sichere Seiten zuzugreifen. Es kann nur auf eine Anmeldeseite umgeleitet werden.Mehrere Anmeldeseiten in einer asp.net-Anwendung

Auch dieser Abschnitt kann nicht nach Standort definiert werden. nur nach Anwendung

Wie kann ich folder2 die zweite Anmeldeseite verwenden?

  • Wenn es etwas gibt, kann ich nach Ort definieren?
+0

Haben Sie zwei verschiedene URLs oder Abfragezeichenfolgen, um den Benutzer zunächst auf die richtige Anmeldeseite zu bringen? – cgreeno

Antwort

1

Siehe How to override/change FormsAuthentication LoginUrl in certain cases

Aus verschiedenen Menschen erscheint die Erforschung, dass Sie nicht FormsAuthentication sagen können zwei verschiedene Login-Seiten zu haben. Aber es gibt nichts, was Sie davon abhält, eine Basisseiten-Klasse oder anderen Code in Ihren zwei Ordnern zu erstellen, die bestimmen kann, auf welche Login-Seite verwiesen werden soll. Oder ich denke, dass das Application_BeginRequest-Ereignis ausgelöst wird, bevor das FormsAuthentication-Modul ausgelöst wird, damit Sie Anforderungen überprüfen können, bevor sie von FormsAuthentication weitergeleitet werden. Wie auch immer, Sie wären gezwungen, anonyme Benutzer an Folder1 und Folder2 zu erlauben, was nicht ideal ist.

+0

gesetzt werden. Das scheint nur so zu sein. – mamu

1

Sie müssen das Element <location> in Ihrer web.config verwenden. Sie können das Tag <location> verwenden, um Autorisierungseinstellungen auf eine einzelne Datei oder ein einzelnes Verzeichnis anzuwenden.

<location path="/root"> 
    <system.web> 
     <authentication mode="Forms" > 
     <forms name="LoginForm" defaultUrl="default.aspx" 
     loginUrl="/root/login.aspx" protection="Encryption" 
     timeout="30" path="/"/> 
     </authentication> 
    <authorization> 
     <allow users="?" /> 
    </authorization> 
    </system.web> 
</location> 
<location path="/root/admin"> 
    <system.web> 
    <authentication mode="Forms" > 
     <forms name="formName" defaultUrl="login.aspx" 
     loginUrl="/root/admin/login.aspx" protection="Encryption" 
     timeout="30" path="/"/> 
    </authentication> 
    <authorization> 
     <allow users="?" /> 
    </authorization> 
    </system.web> 
</location> 

MSDN

Für die zentrale Verwaltung, Einstellungen können in der Machine.config-Datei angewendet werden. Die Einstellungen in der Datei der Datei Machine.config definieren maschinenweite Richtlinie und können auch verwendet werden, um anwendungsspezifische Konfiguration unter Verwendung <location> Elemente anzuwenden. Entwickler können Anwendungskonfigurationsdateien übersteuern Aspekte der Maschinenrichtlinie. Für ASP.NET-Webanwendungen befindet sich eine Web.config-Datei im virtuellen Stammverzeichnis der Anwendung und optional in den Unterverzeichnissen unterhalb des virtuellen Stammverzeichnisses.

Wenn Sie 1 Login-Standort und verschiedene Zugriffsebenen möchten, können Sie roles verwenden.

<location path="/root"> 
    <system.web> 
    <authorization> 
     <allow roles="admin,root" />/*admin, root is allowed */ 
     <deny users="*" /> 
    </authorization> 
    <system.web> 
</location> 

<location path="/root/admin"> 
    <system.web> 
    <authorization> 
     <allow roles="admin" />/*admin is allowed */ 
     <deny users="*" /> 
    </authorization> 
    <system.web> 
</location> 

Benutzer können auf mehr als eine Rolle gehören. Wenn Ihre Site beispielsweise ein Diskussionsforum ist, können einige Benutzer in der Rolle der Mitglieder und Moderatoren sein. Sie könnten jede Rolle mit unterschiedlichen Berechtigungen für die Site definieren, und ein Benutzer, der sich in beiden Rollen befindet, hätte dann beide Sätze von Berechtigungen.

können Sie alle Zugriff auf diese Elemente auf die Code-Ebene, wenn Sie möchten die Rollen manipulieren/Authentifizierung programmatisch

Page.User.Identity.Name 
Page.User.Identity.IsAuthenticated 
Page.User.Identity.AuthenticationType 
Page.User.IsInRole("string"); 

Weitere Links

Using 2 Membership Providers in asp.net

4 Guys From Rolla Tutorial

The ASP.NET web.config File Demystified

+0

Bereits versucht, diese Berechtigung ist allowmachinetoapplication, so kann nicht für die Position – mamu