Asp.net mvc 允许使用mvc 3中的参数和表单身份验证访问特定视图

Asp.net mvc 允许使用mvc 3中的参数和表单身份验证访问特定视图,asp.net-mvc,forms-authentication,Asp.net Mvc,Forms Authentication,我有参数视图,比如用参数键重置密码 public ActionResult ResetPassword(string Email,string Key) { //Do some thing return View(); } 我正在使用表单身份验证。 我想要的是允许未经授权的用户访问此视图 使用AuthorizeAttribute 这将使得只有经过身份验证的用户才有可能执行此特定控制器操作。看 注意:只要正在填充Pr

我有参数视图,比如用参数键重置密码

 public ActionResult ResetPassword(string Email,string Key)
       {
            //Do some thing
            return View();
        }
我正在使用表单身份验证。 我想要的是允许未经授权的用户访问此视图

使用
AuthorizeAttribute
这将使得只有经过身份验证的用户才有可能执行此特定控制器操作。看

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

始终安全-选择退出 但显然,整个控制器或整个应用程序都受到
authorized属性的保护。在这种情况下,您应该选择退出特定的控制器操作。正如Juraj在MVC4中所说,您只需使用
AllowAnonymousAttribute
,但在旧版本中,您可以编写自己的As


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

默认情况下,每个人都可以访问控制器操作。因此,我假设您已将
AuthorizeAttribute
设置在更高的位置,现在您希望在特定操作
ResetPassword
上抑制它。为此,有一个属性
[AllowAnonymous]

[AllowAnonymous]
public ActionResult ResetPassword(string Email,string Key)
{
    //Do some thing
    return View();
}
更新:
正如穆罕默德·阿德尔·扎希德(Muhammad Adeel Zahid)所指出的,这只适用于版本4和更高版本:-/对于MVC 3,您可以使用这里描述的方法:

解决方案是在web.Config中添加位置,并将allowOverride=“false”设置为



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

问题是不允许我更改表单身份验证问题是不允许我更改表单身份验证,所以我必须用表格来解决这个问题authentication@HalaAly:只要填充了
主体
用户
对象,使用哪种身份验证并不重要。适用于Windows身份验证、窗体身份验证或您可能使用的任何其他自定义身份验证技术。其主要思想是,这适用于表单身份验证。但我仍然建议不要在Asp.net MVC中使用这种方式,因为这可能会非常混乱,因为磁盘上不存在这样的路径,并且路由可能会随时更改,从而使此设置过时。使用
AuthorizeAttribute
即使在路由更改时也会继续工作,因为它直接连接到控制器操作。一个MS参考说明了这一点。第一句话告诉你。。。还有另外一种情况是,一个受信任的人也会说同样的话。
[AllowAnonymous]
public ActionResult ResetPassword(string Email,string Key)
{
    //Do some thing
    return View();
}
<location path="reset.password" allowOverride="false">    
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>