mvc3在单个应用程序中跨子域形成身份验证

时间:2011-08-11 21:46:44

标签: asp.net-mvc-3 forms-authentication subdomain single-sign-on

与此问题类似: Single Sign-on - MVC3 and Webforms

我有一个带有自定义路由的MVC3应用程序,它接受子域URL的第一部分并将其用作变量。因此,例如,test1.mydomain.com为我的控制器提供变量子域的值test1。如果我们输入test2.mydomain.com,则控制器会收到“test2”。

问题在于身份验证(使用内置表单身份验证)。如果我在test1.mydomain.com上登录然后导航到test2.mydomain.com,则不会将登录持久保存到该子域。当然,如果我向后导航,则表明我已登录。

我尝试了以下两种解决方案,但它们不起作用: http://www.codeproject.com/KB/aspnet/SingleSignon.aspx Forms Authentication across Sub-Domains

我已经为应用添加了一个机器密钥,但我不确定这是否必要。 注意:我仍然在开发框中,因此域名即将发布到localhost:2510。因此,例如,我的子域名是test1.localhost:2510和test2.localhost:2510。我试图手动将auth cookie域设置为“localhost”,但这不起作用。我告诉你这个问题是我从“localhost”运行。我正在使用不同的绑定(mysite.com)测试它。如果有效,我会更新。但就目前而言,有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

在我在本地创建mysite.com域名(iis绑定)并在那里浏览我的应用程序之后,我发现http://www.codeproject.com/KB/aspnet/SingleSignon.aspx上给出的解决方案完美无缺。如果您需要更多说明,请给我发一个消息。尝试在单个MVC3应用程序上的子域之间保持身份验证时,无法使用Localhost。