我查看了带参数键
的重置密码等参数 public ActionResult ResetPassword(string Email,string Key)
{
//Do some thing
return View();
}
我正在使用表单身份验证。 我想要的是允许未经授权的用户访问此视图。
答案 0 :(得分:3)
默认情况下,每个人都可以访问控制器操作。所以我想,你已经设置了AuthorizeAttribute
更高的位置,现在你想在特定的动作ResetPassword
上压制它。为此目的,有归属[AllowAnonymous]
[AllowAnonymous]
public ActionResult ResetPassword(string Email,string Key)
{
//Do some thing
return View();
}
<强>更新强> 正如Muhammad Adeel Zahid所指出的,这仅适用于版本4及更高版本: - /对于MVC 3,您可以使用此处描述的方法:Securing your ASP.NET MVC 3 Application
答案 1 :(得分:0)
AuthorizeAttribute
这将使得只有经过身份验证的用户才有权执行此特定控制器操作。请参阅MSDN documentation。
[Authorize]
public ActionResult ResetPassword(string Email,string Key)
{
//Do some thing
return View();
}
注意:这适用于您可能正在使用的任何身份验证方法(如果正确编写,则为自定义身份验证方法),只要
Principal
和User
个对象实例为被填充。默认的开箱即用身份验证方法会填充它们,如果您使用某些自定义身份验证方法,请确保它们已填充。
但显然您的整个控制器或整个应用程序都由AuthorizeAttribute
保护。在这种情况下,您应该选择退出特定的控制器操作。由于Juraj sais在MVC 4中,您应该只使用AllowAnonymousAttribute
,但在旧版本中,您可以将自己编写为instructed on this page。
这是您应该遵循的Microsoft首选方法。
答案 2 :(得分:0)
解决方案是在web.Config中添加位置并设置allowOverride =“false”,如
<location path="reset.password" allowOverride="false">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
这解决了我的问题。谢谢大家:))