保护ELMAH文件

时间:2010-05-25 15:26:00

标签: c# asp.net elmah

我试图仅允许访问elmah.axd文件以进行特定登录,并且应拒绝所有其他文件。我跟随Phil Haack的tutorial来保护文件。

<httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
            <add verb="POST,GET,HEAD" path="admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
        </httpHandlers>

<location path="admin">
    <system.web>
        <authorization>
            <allow users="admin@testing.com"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

首先我以 user@testing.com 登录并尝试访问http://localhost:58961/admin/elmah.axd文件,我正确地被重定向到Login.aspx页面。接下来,我以 admin@testing.com 身份登录,然后可以访问http://localhost:58961/admin/elmah.axd上的elmah文件。现在我再次以 user@testing.com 登录,现在我可以访问emlah文件了。这种行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

您的“admin@testing.com”帐户似乎仍然拥有有效的会话密钥。这可能来自浏览器窗口,也可能来自asp.net处理身份验证的方式。

有时可能会出现asp.net身份验证票据市场过期的情况,但cookie还没有(因为滑动到期)