【发布时间】:2013-02-06 05:09:09
【问题描述】:
我有一个奇怪的场景。我有forms authentication 正常工作。我的受保护页面位于一个文件夹中,如果我导航到它们,我将被重定向到登录页面,并在querystring 中返回URL。到目前为止,一切都很好。但我有一页是搜索结果页。要求是,如果用户未登录,页面会隐藏部分数据,但页面的其余部分可以正常查看。
我做了一些技巧来隐藏仅包含经过身份验证的数据的面板,效果很好。我遇到的问题是,如果用户通过搜索过程(这是多步骤)并且在看到结果后想要登录,他们将不得不单击页面顶部的登录链接。这将加载没有返回 url 的登录页面。毕竟,用户单击了指向新页面(登录页面)的链接。提交登录信息后,referrer 错误(应该是当前登录页面)。
因此,在不弄乱适用于受保护文件夹的 FormsAuthentication 系统的情况下,我如何才能将用户返回到他们选择自己登录(从非受保护页面)后的最后一个位置。我意识到这不是 FormsAuthentication 中的缺陷,解决方案可能与此无关,只是想要一些选项。有什么建议吗?
【问题讨论】:
-
杰夫,如果我没听错的话,用户来自搜索页面,您想将他们重定向到搜索页面吗?你的复杂之处在于搜索参数不方便进入查询字符串?
-
@DaveA,我认为他正在使用 UriRefferer msdn.microsoft.com/en-us/library/…
-
@Devjosh,我是这么想的。但是,虽然我做的 MVC 比 Web 表单多,但我注意到引荐来源网址不适用于发布到的页面(如搜索结果页面)
-
对不起你们,我问了一个问题然后消失了,因为我在其他问题上被跟踪了一段时间。我道歉!!简而言之,我有一个不在受保护文件夹中的页面,但在页面顶部确实有一个登录链接。当您尝试导航到受保护文件夹中的页面时,您只会获得要返回的 URL。
-
我实际上解决了这个问题,但我不确定这是不是最好的解决方案。我创建了一个继承 Page 的基本页面。然后我所有的页面都继承了 myBasePage。 myBasePage 包含一个包含该页面 URL 的字符串。 login.aspx 确实继承,但不存储它自己的 url。所以我去的任何页面都会更新 myBasePage.MyUrl。然后在提交后的 login.aspx.cs 中,我重定向到 myBasePage.MyUrl。它有效,但它有点像黑客。还有比这更好的建议吗?
标签: asp.net redirect forms-authentication