1

3 个月前有一个帖子基本上问了我的问题,但我正在重新发布,因为没有答案可以处理我的情况。问题是当表单身份验证重定向到 ASP.NET 中的登录页面时,URL 的哈希部分会丢失(因为它从未发送到服务器),因此登录后,用户不会被定向到正确的位置。有人建议用户可以在重定向用户时存储散列值,但在我的情况下,这不起作用,因为用户正在从电子邮件中的链接访问页面,并且重定向发生在我的代码,但由于 web.config 表单配置而自动执行。有什么想法可以让用户在登录后被引导到正确的基于哈希的深层链接?

这是现有的帖子:.net IE8 hash url redirect

这是一篇关于某人如何在 Java 中解决相同浏览器行为的帖子:http: //forum.springsource.org/showthread.php?101421-Preserving-URL-anchor-when-redirecting

谢谢!

4

1 回答 1

0

以下解决方法可解决此问题:

1)在电子邮件链接中,包含一个包含哈希地址编码版本的查询字符串变量,并包含哈希地址内容

        myUrl = baseUrl + "Account\" + acctId + "?route=%2FApplication%2FEntry" + "#/Application/Entry"

2) 在登录页面的服务器端代码中,读取路由并使用它将哈希部分附加到登录页面将在登录后重定向到的 returnUrl 中:

        if (returnUrl.Contains("?route="))
        {
            string[] split = returnUrl.Split(new string[] { "?route=" }, StringSplitOptions.None);
            var route = Server.UrlDecode(split[1]);
            returnUrl = split[0] + "#" + route;  
        }
于 2012-11-29T20:56:12.117 回答