AllowAnonymous仅在 ASP.NET MVC 5中间歇性地工作
本文关键字:工作 中间 仅在 ASP NET MVC AllowAnonymous | 更新日期: 2023-09-27 17:55:58
我的一个控制器操作拒绝进行身份验证,我不明白为什么。它只是Visual Studio中标准MVC 5项目模板中的标准VerifyCode操作,如下所示:
[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 });
}
点击其中的前两个会导致我的应用程序将我发送回登录页面。点击第三个可以毫无问题地呈现"忘记密码"视图。
我没有任何自定义授权过滤器。这到底是怎么回事?
检查您的 .vs/config/applicationhost.config 文件,并验证以下部分是否设置为"拒绝"和"true"。
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
<add name="AnonymousAuthenticationModule" lockItem="true" />