如何维护用户输入的URL

时间:2012-09-13 06:30:31

标签: c# asp.net iis-7.5

我的iis文件夹结构就像

Default Web Site---->online and Accessing with www.sitename.com/online

Default Web Site---->trade and Accessing with www.sitename.com/trade

Default Web Site---->private and Accessing with www.sitename.com/private

此处登录页面位于“默认网站----> trade / Login.aspx”内。当用户输入时 www.sitename.com/online或www.sitename.com/private或www.sitename.com/trade他/她将重定向到网址www.sitename.com/trade/Login.aspx。

所以我需要的是当用户输入“www.sitename.com/online”时,他/她应该保持与www.sitename.com/online相同的URL,而不是“www.sitename.com/trade/Login.aspx “那我怎样才能维护用户输入的网址。

谢谢, JOBY

3 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是将重定向中的原始网址参数传递到登录页面,然后让登录信息重定向到原始网址

Location: http://example.com/login?ref=http%3A%2F%2Fexample.com%2Ffoo

然后在登录后,您会读取“ref”参数并重新定位一个位置。

答案 1 :(得分:1)

如果您使用的是内置成员资格提供程序,那么您可以使用[Authorize]属性,该属性具有将用户重定向到原始页面的功能,在用户获得身份验证后,系统会自动将用户重定向到请求的页面。

或者您可以尝试以下解决方案:

这样的事情:

www.sitename.com/trade/Login.aspx?ReturnUrl=http%3A%2F%2Fsitemap.com%2Fonline

用户通过身份验证后,您可以将用户重定向到请求的页面。

Response.Redirect(Request.QueryString["ReturnUrl"]);

答案 2 :(得分:0)

考虑使用MVC或至少使用ASPX页面的路由部分来呈现视图。这样,您就可以拥有任何您想要的与物理文件名无关的URL。

用户很少输入任何网址...而且我不确定任何人都会关心,只要网址有一定的意义(或完全不同意)。因此,我认为将登录页面呈现为/ login并重定向回原始页面是完全可以的。如果登录永远不会离开您的网站,您可以将原始网址保存在查询字符串中(如@chovy建议的)或页面上的隐藏元素。如果登录离开您的网站(即OAuth身份验证),会话状态或cookie可能会存储返回网址。