2016-07-08 7 views
1

Einer meiner Controller-Aktionen weigert sich zu authentifizieren, und ich kann nicht verstehen, warum. Es ist nur die Standard-VerifyCode Aktion aus der Standard-MVC 5 Projektvorlage in Visual Studio, und es sieht wie folgt aus:AllowAnonymous funktioniert nur zeitweise in ASP.NET MVC 5

[AllowAnonymous] 
public async Task<ActionResult> VerifyCode(string provider, string returnUrl, bool rememberMe) 
{ 
    if (!await SignInManager.HasBeenVerifiedAsync()) 
    { 
     return View("Error"); 
    } 
    return View(new VerifyCodeViewModel { Provider = provider, ReturnUrl = returnUrl, RememberMe = rememberMe }); 
} 

Jedes Mal, wenn meine Anwendung diesen Controller trifft ohne dass ein Benutzer angemeldet ist, sendet er den Benutzer zurück zum Login Bildschirm, obwohl es mit AllowAnonymous dekoriert ist. Im Gegensatz dazu ist diese Standard-Controller-Aktion:

[AllowAnonymous] 
public ActionResult ForgotPassword() 
{ 
    return View(); 
} 

Funktioniert gut, wenn direkt ohne einen angemeldeten Benutzer getroffen.

So zu versuchen, herauszufinden, was los ist, habe ich die folgenden Testaktionen auf mein Controller:

// to see if it's down to the parameters 
[AllowAnonymous] 
public ActionResult VerifyCode() 
{ 
    return View(new VerifyCodeViewModel { Provider = "", ReturnUrl = "", RememberMe = false }); 
} 

// to see if it's down to the action name 
[AllowAnonymous] 
public ActionResult VerifyCod() 
{ 
    return View(new VerifyCodeViewModel { Provider = "", ReturnUrl = "", RememberMe = false }); 
} 

// to see if it's down to the viewmodel 
[AllowAnonymous] 
public ActionResult ForgotPassword() 
{ 
    return View(new VerifyCodeViewModel { Provider = "", ReturnUrl = "", RememberMe = false }); 
} 

die ersten beiden dieser Ursachen meiner Anwendung Schlagen Sie mich auf die Login-Seite zurück zu senden. Wenn Sie auf den dritten Platz tippen, wird die ForgotPassword-Ansicht ohne Probleme angezeigt.

Ich habe keine benutzerdefinierten Autorisierungsfilter. Was in aller Welt könnte hier vor sich gehen?

Antwort

0

Überprüfen Sie Ihre .vs/config/applicationhost.config-Datei und überprüfen Sie, ob die folgenden Abschnitte auf Verweigern und Wahr eingestellt sind.

<section name="anonymousAuthentication" overrideModeDefault="Deny" /> 
<add name="AnonymousAuthenticationModule" lockItem="true" /> 
+0

Gefunden sie. Sie sind wie beschrieben eingestellt. –

+0

Welche Flags haben Sie am Controller selbst gesetzt? –