允许使用mvc 3和Forms Authentication中的参数访问特定视图

时间:2012-06-07 09:34:13

标签: asp.net-mvc forms-authentication

我查看了带参数键

的重置密码等参数
 public ActionResult ResetPassword(string Email,string Key)
       {
            //Do some thing
            return View();
        }

我正在使用表单身份验证。 我想要的是允许未经授权的用户访问此视图。

3 个答案:

答案 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();
}
  

注意:这适用于您可能正在使用的任何身份验证方法(如果正确编写,则为自定义身份验证方法),只要PrincipalUser个对象实例为被填充。默认的开箱即用身份验证方法会填充它们,如果您使用某些自定义身份验证方法,请确保它们已填充。

始终安全 - 选择退出

但显然您的整个控制器或整个应用程序都由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>

这解决了我的问题。谢谢大家:))