2012-03-27 7 views
0

Ich arbeite an meiner zweiten mandantenfähigen MVC-Anwendung. Meine erste verwendete keine Subdomains. Stattdessen wurden Routen mit dem ersten Parameter für die Kennung "mient" (clientportal) verwendet.Authentifizieren bei Verwendung einer Subdomänenroute

Route route = new Route("{clientportal}/{controller}/{action}/{id}", 
         new RouteValueDictionary(new 
         { 
          controller = "ClientPortalHome", 
          action = "Index", 
          id = UrlParameter.Optional 
        }), new PortalRouteHandler()); 

Dieses Mal muss ich tatsächliche Subdomains verwenden.

Client1.mysite.com
Client2.mysite.com

Um dies zu erreichen, implementiert ich eine Sub-Domain Route ähnlich wie diese:

Is it possible to make an ASP.NET MVC route based on a subdomain?

Meine Frage ist . Wo kann ich meinen Benutzer laden und die Anfrage authentifizieren?

Application_AuthenticateRequest wird vor der Subdomänenroute ausgelöst. Dies bedeutet, dass bei der Ausführung von AuthenticateRequest nicht bekannt ist, für welchen Mandanten die Anfrage bestimmt ist.

Vielleicht kann ich den Benutzer laden und authentifizieren die Anfrage in der Subdomain Route Code, aber das riecht falsch.

Was fehlt mir hier?

Antwort

1

Sie sollten einen benutzerdefinierten Autorisierungsfilter verwenden. Es wird am Anfang des Controller-Prozesses ausgelöst und Sie erhalten alle Informationen, die Sie benötigen, um den Benutzer im ControllerContext zu authentifizieren.

+0

Ich erstellte schließlich ein WorkContext-Objekt, das eine Lazy -Eigenschaft verwendet, um meinen Benutzer zu halten. Ihre Lösung hätte auch gut funktioniert. – rboarman