1

我有一个使用表单身份验证的 asp.net 网站。当我在 Microsoft Word 文档中提供指向网站上安全页面的链接时,即使我已经登录到该网站,它也会设置返回 URL。这意味着我被重定向到登录页面,然后将我定向到未经授权的访问页面,即使我有权查看该页面。

我的web.config代码:

<authentication mode="Forms">
  <forms protection="All" requireSSL="true" name="BSOAuthCookie" loginUrl="~/Login/Login.aspx" defaultUrl="~/secure/securepage.aspx" cookieless="UseCookies" timeout="30" />
</authentication>

这是我的登录页面的页面加载中的代码,用于将我重定向到未经授权的访问页面:

        If Request.IsAuthenticated AndAlso Not String.IsNullOrEmpty(Request.QueryString("ReturnUrl")) Then
            ' This is an unauthorized, authenticated request...
            Response.Redirect("~/UnauthorisedAccess.aspx")
        End If

如果我将相同的链接放在电子邮件中并单击它似乎可以正常工作。

4

1 回答 1

1

使用requireSSL="true"您强制经过身份验证的 cookie 只能在安全页面上读取,任何不安全的页面都不会通过身份验证。

在您的代码上和之前添加此断言,IsAuthenticated 以仔细检查您是从安全页面调用的。

Debug.Assert(HttpContext.Current.Request.IsSecureConnection
                                                  , "Must be on secure page");

还要设置domain="sitename.com", 不带www, 以强制从域和子域设置经过身份验证的 cookie。

<authentication mode="Forms">
  <forms domain="sitename.com 
        protection="All" requireSSL="true" name="BSOAuthCookie" 
        loginUrl="~/Login/Login.aspx" defaultUrl="~/secure/securepage.aspx" 
            cookieless="UseCookies" timeout="30" />
</authentication>
于 2013-06-06T08:16:08.940 回答