ASP.NET MVC - HTTP Authentifizierungsaufforderung
Ist es möglich, meine Anwendung Fragen Sie nach Benutzernamen und Kennwort aufgefordert, bevor Sie das Rendern einer Ansicht?
Genau wie bei twitter-API zum abrufen von Informationen über Ihr Konto:
http://twitter.com/account/verify_credentials.xml
Also vor dem Rendern der Ansicht || Datei, die es fordert Sie auf, legen Sie den Benutzernamen und das Passwort, denke ich, dass diese direkt auf dem server, da die curl-Anfrage basierend auf Benutzername:Passwort wie dieses:
curl -u user:password http://twitter.com/account/verify_credentials.xml
Ich versuche zu bauen, eine API die gleiche Struktur würde ich gerne wissen, wie ich dies auf ASP.NET MVC C#. Ich habe bereits mit dieser auf ruby rails und seine ganz einfach wie:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == "foo" && password == "bar"
end
Ich glaube nicht, dass [Genehmigen] - filter ist der gleiche, da ich glaube, es ist nur eine Umleitung,
und es leitet Sie auf die Konten der Internen Steuerung auf Grundlage der Konten-Datenbank, in diesem Fall werde ich die Verwendung einer anderen Datenbank, insbesondere aus einem webservice und führen die Validierung nach der die Informationen vorgelegt werden.
Aber ich brauche die Aktion, die vom Benutzer verlangen und die übergabe von Anmeldeinformationen auf Ihre Anfrage.
Vielen Dank im Voraus
UPDATE:
Tatsächlich zu verlangen, dass eine Seite dies erfordert Authentifizierung (z.B. Twitter)
Ich hätte zu erklären, diese auf seinen Antrag
request.Credentials = new NetworkCredential("username", "password");
Würden und diese zu reflektieren, dass Sie aufgefordert werden Benutzername und Kennwort.
So, es ist genau die gleiche Sache, aber von der anderen Seite, wenn es möglich ist, stellen Informationen, um die Authentifizierung prompt auf die Anfrage, wie konnte ich verlangen diese Authentifizierung auf Anfrage statt?
Jedes mal also, wenn jemand versucht, eine Anfrage zu stellen, um meine Anwendung auf Beispiel:
http://myapplication/clients/verify_credentials
sollte es zu Fragen für einen Benutzername und Passwort mit dem server-Eingabeaufforderung
also ermittelt werden, um Informationen auf curl zum Beispiel wie es sein würde, diese
curl -u user:password http://myapplication/clients/verify_credentials
InformationsquelleAutor der Frage zanona | 2009-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, um eine basic-Authentifizierung benötigen, müssen Sie return Statuscode 401. Aber tut, wird der Strom-Authentifizierung Modul zum ausführen seiner Standard-autorisierte handler (für die forms-Authentifizierung, das heißt die Umleitung auf die login-Seite).
Schrieb ich einen
ActionFilterAttribte
zu sehen, wenn ich das Verhalten Sie wollen, wenn es keine Authentifizierung-Modul installiert inweb.config
.Und die controller-Aktion :
Dass die Aktion erfolgreich druckt den Benutzernamen und das Passwort habe ich eingeben. Aber ich bezweifle wirklich, dass ist der beste Weg, dies zu tun. Sie haben keine Wahl, außer zu Fragen nach Benutzernamen und Passwort auf diese Weise?
InformationsquelleAutor der Antwort Çağdaş Tekin
Sie wirklich wollen, einen Dienst zu erstellen und nicht eine web-Anwendung, basierend auf was ich gelesen habe. Ich vermute hier, aber ich denke, Sie ausgewählt ASP.NET MVC zu nutzen, das routing und der Aufbau der URL ' s, wie Sie wollen? Korrigieren Sie mich, wenn ich falsch bin.
Meiner Meinung nach der beste Weg, um das problem zu lösen, die Sie haben zu bauen, RESTful-web-services mit WCF, wenn Sie wieder Daten. Diese Artikel sollte Ihnen den Einstieg erleichtern, wenn Sie diese route gehen möchten.
Ansonsten müssen Sie sich weiter zu gehen bis der Stapel für die Bearbeitung des Antrages und die Authentifizierung. Wenn dies der Fall ist, kann ich helfen mit der Bereitstellung von mehr info und den code.
InformationsquelleAutor der Antwort Dale Ragan
Modifizierte ich die çağdaş Antwort, die gesamte Logik in meinem custom ActionFilter Attribut.
Kann es verwendet werden, um unter Standardauthentifizierung eine ganze controller:
oder eine bestimmte ActionResult:
HINWEIS: Die oben genannten Implementierung ist es erforderlich, den Entwickler manuell einfügen den Benutzernamen und das Kennwort als ActionFilter erforderlichen Parameter, aber kann leicht erweitert werden, um es unterstützen jede Autorisierung (MembershipProvider, ASP.NET Identität, benutzerdefinierte userbase auf einem externen DBMS oder eine Datei, etc.) durch das entfernen der benutzerdefinierten Konstruktor und ändern der OnActionExecuting Methode, WENN block entsprechend.
Können Sie auch Lesen Sie hier für mehr info.
InformationsquelleAutor der Antwort Darkseal
Hier ist der Weg, der für mich gearbeitet hat. Es ist ein wenig Fuß-Arbeit, aber es wird IIS und MVC3 benehmen sich viel mehr wie alle die anderen Basic-Http-Authentifizierung an Systemen wie Apache...
Schritt 1.
Schritt 2.
Schritt 3.
Schritt 3a. [Bearbeiten]
Schritt 4.
...und das ist ziemlich viel es.
InformationsquelleAutor der Antwort Will Bellman