表单身份验证重定向导致锚点丢失
所以问题就在这里。
我使用锚作为一种非刷新方式来允许为当前视图对象添加书签。
http://myserver/showobject.aspx#objectid=10
我在更新时使用这个object id 它不会尝试在页面上进行刷新。
这就是问题所在。
我正在使用表单身份验证来处理对这些页面的访问。 因此,当您尝试在未先登录的情况下浏览上述链接时,它会将您重定向到登录页面。 一旦您成功通过身份验证,FormsAuthentication.RedirectFromLoginPage(...) 您将转到您来自的页面。
除了它把 #objectid=10 位关闭之外。
我想出了一些技巧(在重定向到登录页面之前设置一个 cookie,然后读取 cookie 并在“RedirectFromLoginPage”完成后更新链接)来解决这个问题,但想知道是否有任何真正的方法使 FormsAuthentication.RedirectFromLoginPage 做我真正想要它做的事情。
回顾一下:
重定向到登录< /p>
当前/错误行为:登录后重定向至 http://myserver/showobject.aspx - sans #objectId=10
未来/正确行为:登录后重定向以完成原始网址,http://myserver/showobject.aspx#objectId=10
感谢您提前提供的帮助,
约翰。
So here is the problem.
I use Anchors as a non-refreshing way to allow bookmarking of currently view objects.
http://myserver/showobject.aspx#objectid=10
I use this so when updating the object id it doesn't try to do a refresh on the page.
Heres the rub.
I am using forms Authentication to handle access to these pages. So When you try to browse to the above link without having logged in first, it redirects you to the login page. Once you have been successfully authenticated it FormsAuthentication.RedirectFromLoginPage(...) you to the page you came from.
Except that it trunks the #objectid=10 bit off.
I have thought up a few hacks (set a cookie before the redirect to the login page and then read the cookie and update the link after the "RedirectFromLoginPage" is done) for getting around this, but was wondering if there was any real way to make FormsAuthentication.RedirectFromLoginPage do what i actually want it to do.
So recap:
Trying to goto
http://myserver/showobject.aspx#objectId=10Redirected to login
Current/Wrong Behavior: redirected after login to
http://myserver/showobject.aspx -
sans #objectId=10Future/Right Behavior: redirected after login to complete original url, http://myserver/showobject.aspx#objectId=10
Thanks for the assist in advance,
John.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
临时cookie就是这里的方法。 当告诉服务器它们是从哪个 URL 引用时,网络浏览器不会在“#”之后发送任何内容 - 因此服务器无法捕获该信息并知道在用户登录后使用它
temporary cookie is the way to go here. web browsers don't send anything after the "#" when telling the server which URL they are being referred from - so the server can't capture that info and know to use it after the user signs in
URL 的这一部分称为片段,服务器端看不到。 有一些使用插页式页面和一些 JavaScript 的黑客方法,但它可能会变得混乱。
That part of the URL is called a fragment and doesn't get seen by the server side. There are hacky ways around it using an interstitial page and a bit of javascript, but it can get messy.
问题可能是查询字符串中的井号而不是问号吗?
时从未遇到任何问题
我使用表单身份验证,并且在使用
page.aspx?value=x
Could the problem be the pound sign instead of the question mark in your querystring?
I use forms authentication and never have any problems when using
page.aspx?value=x