如果cookie路径不匹配,如何在应用程序之间使用表单身份验证?

时间:2014-09-08 11:22:11

标签: asp.net asp.net-mvc authentication cookies forms-authentication

我有三个ASP.NET MVC应用程序。第一个是CMS,允许每个用户拥有一个可定制的网站。第二个是使用第一个应用程序制作的网站。最后一个是在所有可定制网站共享的在线商店。

有两种类型的用户。第一个可以连接到CMS以创建他或她的网站。第二个是此类网站和共享在线商店的消费者。

为了这个问题,让我们说这些申请可以在以下地址获得:

  • www.example.com(适用于CMS)
  • www.example.com/website/userA(为用户A定制的网站)
  • www.example.com/website/userB(用户B的定制网站)
  • store.example.com(针对在线商店)

要连接到商店,您需要在用户的网站上拥有一个帐户,并且商店将在您连接时采用该用户的颜色和配置。

目前,用户使用相同的凭据连接到网站和商店。应用程序使用表单身份验证我希望连接可以跨应用程序使用,这样当用户连接到网站时,他或她就会自动连接到商店。

我已经阅读了很多关于如何跨应用程序设置表单身份验证的内容,但我似乎无法使其工作,因为两个cookie路径不一样。实际上,网站的路径是' / website / userX'而商店的那个是' /'。我需要在网站上设置这样的路径,以便当用户登录网站时,他或她没有连接到所有网站。

我怎么能让这个工作?即使路径不同,我是否可以跨两个应用程序进行身份验证,或者如果我将网站的路径更改回' /',还有另一个确保当用户连接到一个网站,他或她没有连接到所有网站?

非常感谢。

1 个答案:

答案 0 :(得分:0)

对于您提供的示例,您需要在表单身份验证配置中将domain设置为:

<authentication mode="Forms">
  <forms domain="example.com"  />
</authentication>

使用此设置,用户可以在您编写的所有示例站点上拥有相同的身份验证cookie。然后在你的身边你需要以编程方式检查用户是否有写入并查看它并使用它。