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

点击其中的前两个会导致我的应用程序将我发送回登录页面。点击第三个可以毫无问题地呈现"忘记密码"视图。

我没有任何自定义授权过滤器。这到底是怎么回事?

AllowAnonymous仅在 ASP.NET MVC 5中间歇性地工作

检查您的 .vs/config/applicationhost.config 文件,并验证以下部分是否设置为"拒绝"和"true"。

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