【问题标题】:Allow Anonymous Access to ForgotPassword Page允许匿名访问忘记密码页面
【发布时间】:2016-10-28 21:42:45
【问题描述】:

我的登录页面上有一个指向 /ForgotPassword 的链接。当它被点击时,我只是被重定向到 /Login?ReturnUrl=%2fForgotPassword。这是一个使用基于表单的身份验证的 MVC5 应用程序。我正在尝试使用 AllowAnonymous,但它不起作用。 网络配置:

  <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>

忘记密码控制器:

 [AllowAnonymous]
 public class ForgotPasswordController : Controller
 {
    [AllowAnonymous]
    public ActionResult Index()
    {          
        return View();
    }
 }

没有这样的运气。除了 _ViewStart,我找不到任何应该用 AllowAnonymous 装饰的正在使用的东西。

我在这里缺少什么?谢谢!

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 routing forms-authentication


    【解决方案1】:

    在 we.config 中不要使用授权标签,在控制器和动作中只使用授权属性。

    web.config 中的授权标签对于允许/限制对文件的访问很有用,它适用于 Web 表单和静态内容。

    但是在 MVC 中有映射到控制器和动作的路由,并且您可能在同一个控制器中有不同的动作,具有不同的授权标签,例如:您可以对整个控制器使用 [Authorize],并且只允许一个动作对于匿名用户,仅对所需操作使用 [AllowAnonymous] 属性。

    在此处阅读更多信息:https://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-global-authentication-and-allow-anonymous

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多