允许匿名访问ForgotPassword页面

时间:2016-10-28 21:42:46

标签: asp.net-mvc asp.net-mvc-5 routing forms-authentication

我的登录页面上有/ ForgotPassword链接。当它被点击时,我只是被重定向到/ Login?ReturnUrl =%2fForgotPassword。这是一个使用基于表单的身份验证的MVC5应用程序。我正在尝试使用AllowAnonymous,但它无法正常工作。 Web配置:

  <location path=".">
  <system.web>
  <authorization>
    <deny users="?"/>
  </authorization>
  </system.web>
  </location>
  <location path="Content">
  <system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
  </system.web>
  </location>
  <location path="Scripts">
  <system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
  </system.web>
  </location>
  <location path="App_Themes">
  <system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
  </system.web>
 </location>

<authentication mode="Forms">
  <forms loginUrl="~/Login" timeout="15"/>
</authentication>

ForgotPassword Controller:

 [AllowAnonymous]
 public class ForgotPasswordController : Controller
 {
    [AllowAnonymous]
    public ActionResult Index()
    {          
        return View();
    }
 }

没有这样的运气。除了_ViewStart之外,我找不到任何应该用AllowAnonymous修饰的东西。

我在这里失踪了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

请勿在we.config中使用授权标记,仅在控制器和操作中使用授权属性。

web.config中的

授权标签对于允许/限制对文件的访问很有用,它可以很好地处理Web表单和静态内容。

但是在MVC中存在映射到控制器和操作的路由,并且您可能在具有不同授权标记的同一控制器中具有不同的操作,例如:您可以对整个控制器使用[授权],并且仅允许一个操作对于anonymouse用户,只使用[AllowAnonymous]属性进行所需操作。

在此处阅读更多内容:https://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-global-authentication-and-allow-anonymous