2016-07-08 51 views
1

我的一個控制器動作拒絕認證,我不明白爲什麼。這只是從Visual Studio中的標準的MVC 5項目模板的標準附加碼行動,它看起來像這樣:AllowAnonymous只能在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 }); 
} 

每當我的應用程序達到這個控制器沒有登錄的用戶,它會將用戶返回到登錄屏幕上,即使它用AllowAnonymous裝飾。相比之下,這個標準的控制器行動:

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

如果沒有登錄的用戶直接命中,工作正常。

所以,試圖弄清楚這是怎麼回事,我添加了下面的測試行動,以我的控制器:

// 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 }); 
} 

擊中前兩項原因,我的應用程序發送我返回到登錄頁面。點擊第三個呈現ForgotPassword視圖沒有問題。

我沒有任何自定義授權過濾器。這到底是怎麼回事?

回答

0

檢查.vs/config/applicationhost.config文件並驗證以下部分是否設置爲拒絕併爲true。

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

找到它們。它們的設置如上所述。 –

+0

你在控制器上設置了哪些標誌? –

相關問題