【问题标题】:How to use forms authentication across applications when cookie paths don't match?当 cookie 路径不匹配时,如何跨应用程序使用表单身份验证?
【发布时间】:2014-09-08 19:27:10
【问题描述】:

我有三个 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”,而商店的路径是“/”。我需要在网站上以这种方式设置路径,这样当用户登录网站时,他或她不会连接到所有网站。

我怎样才能做到这一点?即使路径不同,我是否可以在两个应用程序之间进行身份验证,或者,如果我将网站的路径改回“/”,是否有另一个可以确保当用户连接到一个网站时,他或她没有连接到所有网站?

非常感谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-21
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2015-09-03
      相关资源
      最近更新 更多