FormsAuthentication.SetAuthCookie wird in MVC 5 nicht autorisiert
Ich erstellt eine neue ASP.NET MVC 5 Projekt zum testen der [Authorize]
Attribut mit FormsAuthentication.SetAuthCookie
. Ich habe einfach ein cookie gesetzt, in einer Aktion (in meinem Home-controller):
public ActionResult About()
{
FormsAuthentication.SetAuthCookie("someUser", false);
Und ich Begrenze den Zugang zu einem anderen:
[Authorize]
public ActionResult Contact()
{
Wenn ich starte meine web-Seite, und navigieren Sie zu /home/contact
bin ich richtig umgeleitet auf eine login-Seite. Dann gehe ich /home/about
mein cookie, und gehen Sie zurück zu der Seite "Kontakt". Aber ich bin immer noch auf die Anmeldeseite umgeleitet -- der cookie nicht authentifizieren/autorisieren Sie mich.
Im debugger HttpContext.User.Identity.IsAuthenticated == false
wenn ich das laden der Seite mehrere Male (das heißt, es nie sieht mich authentifizierte auch nach Einstellung ein auth-cookie).
Gibt es einige zusätzliche Schritte, die hier gemacht werden darf? Sollte ich nicht brauche, um meine eigenen IPrincipal-für basic-Authentifizierung, sollte ich?
InformationsquelleAutor der Frage user655321 | 2014-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
web.config entfernen:
oder einfach die Zeile entfernen
im web.config
InformationsquelleAutor der Antwort Jorge Rocha
EDIT: ich wusste nicht, MVC5 standardmäßig neue Projekte zu haben, die Forms-Authentifizierung entfernt (das Modul wird entfernt), so stellen Sie sicher, dass Sie auch überprüfen, DSR ' s Kommentar unter deinem ursprünglichen post in Konjunktur mit all dies.
Überprüfen Sie Ihre web.config und suchen Sie nach der Authentifizierung Abschnitt, es sollte so Aussehen,
http://msdn.microsoft.com/en-us/library/1d3t3c61%28v=vs.85%29.aspx
Den Standard-cookieless-Wert ist "UseDeviceProfile", was bedeutet, dass cookies verwendet werden, wenn der browser meldet, dass er unterstützt cookies, andernfalls werden cookies nicht verwendet, verwendet es die Werte in der querystring zu pflegen, die einem authentifizierten Zustand (die beibehalten werden müssen über postbacks).
Zweitens, stellen Sie sicher, dass cookies in Ihrem browser. Wenn das Gerät/browser unterstützt keine cookies oder Sie sind deaktiviert dann SetAuthCookie werden änderungen an der url, aber Sie haben das umleiten der browser nach dem Aufruf SetAuthCookie mit...
Diese Methode leitet die Seite an, es ist Ziel, nach der Authentifizierung mit SetAuthCookie. RedirectFromLoginPage werden die erforderlichen Attribute in der url-query zur Aufrechterhaltung der login-session quer durch postbacks. Wenn Sie Ihre eigenen Weiterleitungen auf die Website hier und dort müssen Sie behaupten, dass der url-query-parameter über postbacks Ihr selbst mit der überprüfung, ob der aktuelle Benutzer authentifiziert ist, mit HttpContext.Aktuelle.Benutzer.Identität.IsAuthenticated.
In Ordnung, senden Sie Ihre Benutzer auf die login-Seite, die Sie verwenden sollten
Diese Methode fügt ein returnUrl-parameter an die Abfrage-Zeichenfolge, die die spätere Funktion "RedirectFromLoginPage" leitet wieder zu, nachdem er authentifiziert ist.
Wenn Sie blockieren Sie den Zugriff auf Benutzer oder Rollen, mit Lage Elemente in Ihrer Website.config Pfade und Ressourcen-Formularen-Authentifizierung-behandelt die Umleitung auf die login-Seite automatisch, wenn ein nicht authentifizierter Benutzer versucht, auf Sie zuzugreifen.
InformationsquelleAutor der Antwort Ryan Mann
ist wie es ist nicht für mich arbeiten, wenn ich mit demselben code mit kleinen änderungen funktioniert es
**<location path="~/SomeFolderOnYourSite">
<system.web>
<authorization>
<deny users="?"/>
<allow roles="Administrators"/>
</authorization>
</system.web>
</location>**
InformationsquelleAutor der Antwort Purush