我的登录页面上有/ 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修饰的东西。
我在这里失踪了什么?谢谢!
答案 0 :(得分:1)
请勿在we.config中使用授权标记,仅在控制器和操作中使用授权属性。
web.config中的授权标签对于允许/限制对文件的访问很有用,它可以很好地处理Web表单和静态内容。
但是在MVC中存在映射到控制器和操作的路由,并且您可能在具有不同授权标记的同一控制器中具有不同的操作,例如:您可以对整个控制器使用[授权],并且仅允许一个操作对于anonymouse用户,只使用[AllowAnonymous]属性进行所需操作。