【问题标题】:Authentication on one site using the ASP.NET membership of another使用另一个站点的 ASP.NET 成员身份在一个站点上进行身份验证
【发布时间】:2019-05-07 20:49:56
【问题描述】:

我们有一个网站为其用户帐户使用 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

【问题讨论】:

    标签: asp.net-mvc asp.net-membership


    【解决方案1】:

    我发现了问题:

    我在站点 #2 的 web.config 中缺少 applicationName="/"。现在applicationNames 设置相同,它可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多