0

我有一个 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 页面以提供凭据。

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

4

1 回答 1

0

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

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

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

世界上一切都好!:)

于 2013-11-13T20:14:22.440 回答