将ASP.NET的“ReturnURL”转换为绝对URL

时间:2012-03-01 22:58:49

标签: asp.net asp.net-mvc asp.net-mvc-3 redirect forms-authentication

我有两个安全网站:

siteA.example.com
siteB.example.com

siteA.example.com上存在常见的登录页面。如果您在未登录的情况下访问siteB.example.com,则会重定向到siteA.example.com。 URL最终看起来像这样:

http://siteA.example.com/Account/LogOn?ReturnUrl=%2f

这对我不起作用,因为即使用户访问过siteB.example.com,返回网址实际上最终也会将您带到siteA.example.com的主页。

是否有可配置的方法来解决此问题?或者我应该只是挂钩一个全局生命周期事件来改变响应?

3 个答案:

答案 0 :(得分:2)

您可以撰写custom module或使用custom authorize attribute

答案 1 :(得分:1)

我发现了这个小技巧:

更改

的配置
 <forms loginUrl="http://google.com/Login?domain=http://google.fr/" />

google.com是您输入凭据的地方,google.fr是需要登录用户的应用。

然后,您必须在重定向用户之前将其与参数ReturnUrl连接起来。

答案 2 :(得分:0)

设置returnURL的值时,请使用UrlHelper。使用允许您设置主机名的重载,并传入sizeA.example.com。

UrlHelper.GenerateUrl(null, "action", "controller", "http", "siteA.example.com", null, new { id = "Awesome" }, routes);