检测asp.net将用户重定向到登录页面

时间:2009-02-15 10:53:32

标签: .net asp.net redirect login

我的网站中有一个受匿名用户保护的目录。我的web.config看起来像这样

<location path="members">
    <system.web>
        <authorization>
            <allow roles="members" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

如果匿名用户尝试访问“/ members”目录中的页面,他们将被重定向到登录页面。

从登录页面的代码隐藏中,有没有办法区分用户重定向的方式与用户手动转到登录页面之间的区别? (通过输入网址或点击登录页面的链接)

我知道网络是无状态的,所以也许这两个请求难以区分

如果无法区分这两者,是否有办法拦截之前发生的事情。由于未经授权的访问尝试,.net决定重定向用户?

注意:我不能在查询字符串中使用“ReturnUrl”因为我会以同样的方式装饰它

2 个答案:

答案 0 :(得分:1)

您可以查看“推荐人”request header

  

Referer [sic] request-header字段允许客户端为服务器的好处指定从中获取Request-URI的资源的地址(URI)(“referrer”,尽管头字段是拼写错误。)

但是浏览器可以说引用者。另请参阅this article,它提供了一些有关未经授权访问的示例,它完整地描述了asp.net授权的工作原理。

答案 1 :(得分:1)

除了检查Referer之外,您还可以检查“ReturnUrl”属性的查询字符串。这表明Asp.Net已经重定向了用户。然而,它不是100%。