2011-05-10 94 views
5

我想使用MVC3自带的相同ASP.NET成员资格提供程序数据库运行两个Web应用程序。因此两个Web应用程序并排运行,并且它们都具有与同一成员数据库相同的连接。现在的问题是,我只能登录一个应用程序并自动注销其他应用程序。但是,我想要的功能是,如果我登录到其中一个,我会自动登录到另一个。ASP.Net成员登录问题

我想知道启用此功能的技巧是什么。

非常感谢

回答

4

如果您使用的是Forms Authentication,则会使用Cookie跟踪用户。默认情况下Cookie仅限于发送它们的应用程序。因此,其他应用程序无法看到第一个创建的身份验证Cookie。因此,举例来说,如果你有分别foo.example.com举办了两届的应用程序和bar.example.com你可以在这两个应用程序的web.config设置cookie的domain属性example.com

<forms 
    loginUrl="/login/index.mcp" 
    requireSSL="true" 
    protection="All" 
    timeout="120" 
    domain="example.com" 
/> 

这样的cookie将那两个应用程序之间共享并且您将能够实现单点登录。

+0

那么,我测试了它,它并没有在我的机器上工作。我所做的就是在我的IIS网站“lwww.domain.com”中创建一个网站,然后将一个应用程序部署到根目录中,另一个应用程序部署到根目录下的单独Web应用程序中。他们使用不同的应用程序池。我登录到根目录,但没有得到自动登录到孩子....任何帮助表示赞赏。 – Frank 2011-05-11 01:00:12

+0

@ user299230,你在web.config中设置了'domain'属性为什么?当您使用FireBug或Fiddler进行检查时,您是否看到将身份验证cookie发送到第二个应用程序?也可以尝试设置两个应用程序中的sama机器密钥:http://msdn.microsoft.com/en-us/library/ff649308.aspx – 2011-05-11 05:19:50

0

Finanlly我修好了。 我的应用程序在同一个域下运行,因此域不是问题(但非常感谢Darin)。 问题是: IIS默认为不同的Web应用程序生成不同的机器密钥。所以我必须在web.config中明确指定相同的机器密钥〜!

+0

给Darin试图帮助你的要点! – Jeremy 2011-05-11 04:24:18