2009-08-04 5 views
2

Ich schreibe eine MVC-App, die zwei Zweige hat, um von Anfang an zu reisen. Ein Pfad wird mit einer PIN autorisiert und ich verwende eine Formularauthentifizierung, um den Zugriff auf diesen Abschnitt des Codes zu beschränken. Der andere Pfad akzeptiert jedoch eine AD-Anmeldung, und ich muss verhindern, dass sich Personen mithilfe von URLs zwischen den Zweigstellen bewegen. Sollte ich ein benutzerdefiniertes Routing verwenden oder sollte ich zwei separate Autorisierungsattribute erstellen, um den Zugriff zu beschränken.MVC Routing vs. Autorisierung/Autorisieren Tag

Dank

Antwort

2

könnten Sie Rollen verwenden, um dies mit dem bestehenden AuthorizeAttribute zu handhaben. Stellen Sie Ihre AD-autorisierten Benutzer einfach in eine bestimmte Rolle, und in den Pfaden, die eine AD-Anmeldung erfordern, legen Sie fest, dass die Rollen für diesen Controller/diese Methode die AD-Rolle benötigen. Dies würde die Implementierung einer RoleProvider erfordern, die etwas einschüchternd wirken kann, aber wirklich nicht so schlimm ist. Speichern Sie die Rollen des Benutzers in einem Cookie, so dass Sie nicht jedes Mal nachsehen müssen. Der Vorteil hier ist, dass dies zu zusätzlichen Rollen skalieren wird, wenn Ihre Anwendung komplexer wird.

Alternativ können Sie das vorhandene AuthorizeAttribute erweitern und dabei OnAuthorization überschreiben und Ihre benutzerdefinierte Version verwenden. Dieses Attribut könnte prüfen, ob nicht nur die Anforderung autorisiert ist, sondern auch, dass sie über den richtigen Anmeldeinformationstyp verfügt. Der Anmeldeinformationstyp könnte bei der Anmeldung in der Sitzung gespeichert und von dort für authentifizierte Benutzer abgerufen werden. Dies ist einfacher zu schreiben, skaliert aber nicht so gut.