【问题标题】:ASP.NET Routing and Forms AuthenticationASP.NET 路由和表单身份验证
【发布时间】:2013-11-12 22:23:41
【问题描述】:

我有一个 ASP.NET 网站(不是 MVC),该网站在 /users 文件夹中有网页,除非用户登录,否则无法访问。在 /users 文件夹中,我有一个 web.config 文件带有以下内容:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>

在网站根目录下,web.config 文件有:

<authentication mode="Forms">
  <forms loginUrl="~/account/login.aspx" timeout="2880" />
</authentication>

当用户请求 /users 目录中的页面时,例如 /users/myccount.aspx,一切正常。如果他们没有登录,他们会被定向到 login.aspx 页面,然后如果成功登录则返回到最初请求的页面。按预期工作。

但是,现在我们添加了 ASP.NET 路由,它的行为方式不再相同。现在,如果用户请求http://mydomain.com/myaccount,然后将其转换为 /users/myaccount.aspx 页面作为该路由的 HTTPHandler,则用户不会被定向到 login.aspx 页面以提供凭据。

不知道如何处理。大家有什么想法吗?

【问题讨论】:

    标签: asp.net forms-authentication url-routing


    【解决方案1】:

    好的,找到了我自己问题的答案。

    我创建了一个实现 IRouteHandler 接口的自定义类。除了我没有明确调用 UrlAuthorizationModule 以确定当前用户是否有权查看请求路由的特定 HTTPHandler(页面)之外,这非常有效。

    因此,解决方案不是实现 IRouteHandler 接口,而是从 PageRouteHandler 类继承并覆盖我需要的方法,以便在调用 PageRouteHandler.GetHTTPHandler 方法之前添加我们必要的自定义代码。

    世界再次一切安好! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2012-10-11
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多