4

我有两个安全地点:打开ASP.NET的“RETURNURL”成绝对URL

siteA.example.com 
siteB.example.com 

页面一个共同的标志存在于siteA.example.com。如果您未登录就访问siteB.example.com,您将被重定向到siteA.example.com。该URL最后应该是这样的:

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

这并不为我工作,因为返回URL实际上只是最终带你到siteA.example.com的网页,即使用户访问站点B .example.com的。

有没有一种可配置的方法来解决这个问题?或者我应该参加全球生命周期事件之一以改变回应?

回答

2

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

+0

我得到臭名昭着的达林回应我的一个帖子? :)感谢您的链接。我想到一个模块或事件可能是我的解决方案,但我想确保我没有忽略表单身份验证。此外,欢迎您在StackOverflow上提供的帮助。我与MVC学习和工作的最后几个月经常发现你的帖子。 – 2012-03-01 23:04:10

0

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

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

我发现这个小窍门:

改变你的配置为

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

哪里google.com是在这里您可以输入您的凭据并google.fr是应用程序需要一个登录在用户中。

然后,您只需在重定向用户之前将其与参数ReturnUrl连接即可。

+0

这么简单,我希望我能想到它。您需要自定义登录处理程序逻辑,但无论如何,我的特定情况要求(混合模式身份验证)。 – KeithS 2017-05-11 20:54:25