none
membership 身份验证cookie共享问题 RRS feed

  • 问题


  • 我碰到一个很无语的问题,a、b两个服务器,里面各有两个网站,其中1、3两个站点代码完全一模一样,除了数据库连接;2、4两个站点也是除数据库连接,代码一模一样,现在四个站点都是使用的.net 身份验证 System.Web.Security.SqlMembershipProvider 保存的cookie域名一样,cookie名也是一样,现在1、4   2、3这样交叉感染了。。。。就是1里面登录,4里面不需要登录了,2里面登录,3里面不需要登录,这。。。。。我郁闷死了  
    • 已移动 Caillen 2014年4月9日 5:21
    2014年4月8日 6:42

全部回复

  • 我也查了相关资料
    http://msdn.microsoft.com/zh-cn/library/eb0zx8fc(v=vs.100).aspx
    但是根据上面设置了之后也是没用

    1、2两个站点的cookie值长度始终不是一样长度,也就是加密后保存的值不一样

    我用反编译工具也看了源代码,没发现有什么地方会导致这现象

    2014年4月8日 14:11
  • 你好:

    欢迎来到MSND中文论坛。

    请问这两台服务器是在同一个域中吗?站点中关于身份验证的配置分别是什么样的呢?另外你期望的结果是什么呢?

    提供两篇文章供你参考一下:

    Single Sign-on in ASP.NET and Other Platforms

    Single Sign On (SSO) for cross-domain ASP.NET applications


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年4月9日 6:00
  • 这不会吧,Cookie中包含了服务器的信息,除非你的服务器处在公用同一个域和同一个IP地址
    2014年4月9日 13:27
  •     <authentication mode="Forms">
          <forms name="CMS" loginUrl="~/Account/Logon" defaultUrl="/home/index"
                 requireSSL="false" slidingExpiration="false" enableCrossAppRedirects="true"
                 
                 cookieless="UseCookies"  domain="xxx.com" path="/" protection="None" timeout="360">
            <credentials passwordFormat="Clear"></credentials>
          </forms>
        </authentication>
        <membership defaultProvider="AspNetSqlMembershipProvider">
          <providers>
            <remove name="AspNetSqlMembershipProvider" />
            <add name="AspNetSqlMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="true"
                 enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false"
                 passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7"
                 minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""
                 type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"  />
          </providers>
        </membership>
        <roleManager enabled="true" cacheRolesInCookie="true" cookiePath="/" cookieName=".ASPXROLES" cookieTimeout="360" cookieProtection="All" createPersistentCookie="false" maxCachedResults="25" cookieRequireSSL="false" defaultProvider="AspNetSqlRoleProvider" cookieSlidingExpiration="true">
          <providers>
            <clear />
            <add connectionStringName="DefaultConnection" applicationName="/" type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" name="AspNetSqlRoleProvider" />
          </providers>
        </roleManager>
        <anonymousIdentification enabled="false" />
        <profile enabled="true" defaultProvider="AspNetSqlProfileProvider">
          <providers>
            <clear />
            <add name="AspNetSqlProfileProvider" connectionStringName="DefaultConnection" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
          </providers>
          <properties>
            <clear />
            <add name="UserNick" type="System.String" />
            <add name="UserPic" type="System.String" />
          </properties>
        </profile>
    

    1)a服务器是在idc机房的,b服务器是在公司内网的

    2)mvc的和webform的配置文件中除了loginurl和defaulturl的属性值不一样,其他的都是一样的

    3)我希望的是,四个站点,在任意一个站点上登录,其他几个站点,不需要再登录

    2014年4月10日 2:50