Asp.net mvc 在一个站点上使用另一个站点的ASP.NET成员身份进行身份验证

Asp.net mvc 在一个站点上使用另一个站点的ASP.NET成员身份进行身份验证,asp.net-mvc,asp.net-membership,Asp.net Mvc,Asp.net Membership,我们有一个网站的用户帐户使用ASP.NET成员身份。假设此站点位于www.domain.com 我们还有另一个站点,比如www.domain.com/site2,由于其他原因,它已经连接到站点1的数据库。我们希望实现对站点#2的用户名/密码登录,并希望使用站点#1的现有登录凭据,因为站点#1是他们申请访问各种系统等权限的地方 我并不是在尝试创建一种类似SSO的解决方案,即登录到一个站点就可以登录到另一个站点,这正是其他问题所涉及的 我希望他们能够输入他们在站点#1上拥有的用户名和密码,在站点#2

我们有一个网站的用户帐户使用ASP.NET成员身份。假设此站点位于
www.domain.com

我们还有另一个站点,比如www.domain.com/site2,由于其他原因,它已经连接到站点1的数据库。我们希望实现对站点#2的用户名/密码登录,并希望使用站点#1的现有登录凭据,因为站点#1是他们申请访问各种系统等权限的地方

我并不是在尝试创建一种类似SSO的解决方案,即登录到一个站点就可以登录到另一个站点,这正是其他问题所涉及的

我希望他们能够输入他们在站点#1上拥有的用户名和密码,在站点#2上输入用户名和密码,并授权他们访问站点#2

这可能吗

网站#1的Web.config:


....
网站#2的Web.config:


其中
VTConnString
指向站点1的数据库


但是当我在site#2中调用
Membership.ValidateUser(用户名、密码)
时,它总是返回
false

,我发现了问题:


我在站点2的web.config中缺少
applicationName=“/”
。既然
applicationName
s设置相同,它就可以正常工作了。

我解决了这个问题:

我在站点2的web.config中缺少
applicationName=“/”
。既然
applicationName
s设置相同,它就可以正常工作了

<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" />
<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" 
         type="System.Web.Security.SqlMembershipProvider" 
         connectionStringName="VTDB" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="true" 
         maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="8" 
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="10" 
         applicationName="/" />
  </providers>
</membership>
<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" 
         type="System.Web.Profile.SqlProfileProvider" 
         connectionStringName="VTDB" 
         applicationName="/" />
  </providers>
</profile>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="VTDB" 
         name="AspNetSqlRoleProvider" 
         applicationName="/" 
         type="System.Web.Security.SqlRoleProvider" />
  </providers>
</roleManager>
....
<membership defaultProvider="AspNetSqlMembershipProvider">
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" 
         type="System.Web.Security.SqlMembershipProvider" 
         connectionStringName="VTConnString" />
  </providers>
</membership>
<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" />