我们有一个站点使用ASP.NET成员资格作为其用户帐户。假设此站点位于www.domain.com
。
我们有另一个站点,例如www.domain.com/site2
,由于其他原因,该站点已经连接到站点#1的数据库。我们想要实现对站点#2的用户名/密码登录,并希望使用站点#1的现有登录凭据,因为站点#1是他们申请访问各种系统的权限的地方。
我不是要创建一种SSO解决方案,登录一个站点会将您登录到另一个站点,这就是其他问题所在。
我希望他们能够输入他们在站点#1上拥有的用户名和密码,在站点#2上输入该用户名和密码,并将它们授权到站点#2。
这可能吗?
网站#1的Web.config:
<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>
....
网站#2的Web.config:
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="VTConnString" />
</providers>
</membership>
<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" />
VTConnString
指向站点#1的数据库的地方。
但是,当我在站点#2中呼叫Membership.ValidateUser(userName, password)
时,它总是返回false
。
答案 0 :(得分:0)
我发现了这个问题:
我在站点2的web.config中缺少applicationName="/"
。现在applicationName
设置相同,它可以正常工作。