1

我可以查看参数,例如使用参数键重置密码

 public ActionResult ResetPassword(string Email,string Key)
       {
            //Do some thing
            return View();
        }

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

4

3 回答 3

3

默认情况下,每个人都可以访问控制器操作。所以我想,你已经设置了一个AuthorizeAttribute更高的地方,现在你想在特定的 action 上抑制它ResetPassword。为此,有属性[AllowAnonymous]

[AllowAnonymous]
public ActionResult ResetPassword(string Email,string Key)
{
    //Do some thing
    return View();
}

更新: 正如 Muhammad Adeel Zahid 指出的那样,这仅适用于版本 4 及更高版本:-/ 对于 MVC 3,您可以使用此处描述的方法:保护您的 ASP.NET MVC 3 应用程序

于 2012-06-07T10:16:55.787 回答
0

采用AuthorizeAttribute

这将使得只有经过身份验证的用户被授权执行这个特定的控制器操作成为可能。请参阅MSDN 文档

[Authorize]
public ActionResult ResetPassword(string Email,string Key)
{
    //Do some thing
    return View();
}

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

始终安全 - 选择退出

但显然,您的整个控制器或整个应用程序都由AuthorizeAttribute. 在这种情况下,您应该选择退出特定的控制器操作。正如 Juraj 在 MVC 4 中所说,您应该简单地使用,但在旧版本中,您可以按照此页面上的说明AllowAnonymousAttribute编写自己的。

这是您应该遵循的 Microsoft 首选方​​法。

于 2012-06-07T09:58:53.153 回答
0

解决方案是在 web.Config 中添加位置并设置 allowOverride="false" 之类的

<location path="reset.password" allowOverride="false">    
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

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

于 2012-06-07T11:33:07.660 回答