【问题标题】:Response.Redirect ReturnUrlResponse.Redirect ReturnUrl
【发布时间】:2011-02-10 20:53:32
【问题描述】:

我正在尝试在使用路由和成员资格的 ASP.NET 页面上使用 Response.Redirect,以便将未登录的用户重定向到主页。根据内容,匿名用户有时应该可以查看此页面。当我重定向到登录页面时,浏览器会用无效内容填充 returnurl。

问题是如何在“关闭”用户之前删除 ReturnURL?或者如何修复它以使其包含正确的链接?

页面位于不同的目录中。它正确重定向,但将 ReturnURL 设置为无效路径。

ReturnUrl 只是设置为文件夹。不要到带有查询参数的页面,也不要到路由。

更新

好吧,它在做什么

我有一个文件夹 Actions。我正在重定向到 Login.aspx。它重定向到 login.aspx,但随后将 returnurl 设置为 Actions/Login.aspx,这是绝对错误的。

在 2 个帐户上是错误的:

  1. actions 文件夹中不存在 login.aspx
  2. 它创建一个递归重定向

部分更新修复

好的,这是因为我在不同的文件夹中并且没有重定向到正确的页面。

我有“login.aspx”而不是“../login.aspx”

但是,它没有将 returnurl 设置为路由路径。它正在剥离返回网址。不过,我可能已经决定将其作为设计决策,但不是 100% 确定。

【问题讨论】:

  • 这是什么无效内容?你是如何实现重定向的?您重定向到的路由是否符合您的路由规则?当然,你的问题是什么
  • 能贴出相关代码吗?
  • @Oded 确实没有相关的代码。如果您在 ASP.NET 表单页面中实现路由,请打开身份验证,将允许所有用户添加到作为路由路径的路径,然后尝试将用户重定向回登录。你会看到这个。
  • @Oded 1 秒.. 我会提供更多细节
  • 我想我只是不明白你的描述是怎么回事。我不知道您要重定向到的 URL 是什么,您的路由是什么样的,无效内容是什么以及它出现在哪里。我可以向你保证,如果我不明白,其他人也不会。

标签: asp.net


【解决方案1】:

我不了解您所面临问题的本质,但我想您可能错过了申请 Server.UrlEncode 来返回 url。请看看Server.UrlEncode

上做了什么

http://msdn.microsoft.com/en-us/library/ms525738(v=vs.90).aspx

下面是一段代码,它显示了如何使用 Server.UrlEncode 指定返回 URL

Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + 
Server.UrlEncode(Request.Url.ToString()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2011-02-10
    • 2018-04-05
    • 1970-01-01
    • 2021-04-04
    • 2010-10-27
    相关资源
    最近更新 更多