Аутентификация на одном сайте с использованием членства ASP.NET другого - PullRequest
0 голосов
/ 07 мая 2019

У нас есть один сайт, который использует членство ASP.NET для своих учетных записей.Допустим, этот сайт находится на www.domain.com.

У нас есть еще один сайт, скажем на www.domain.com/site2, который уже подключается к базе данных сайта # 1 по другим причинам.Мы хотели бы внедрить имя пользователя / пароль для входа на сайт № 2 и использовать существующие учетные данные для входа на сайт № 1, поскольку на сайте № 1 они запрашивают разрешение на доступ к различным системам и т. Д.

Я не пытаюсь создать решение типа единого входа, где вход на один сайт позволяет вам войти на другой, как и другие вопросы.

Я бы хотел, чтобы они могличтобы ввести их имя пользователя и пароль, которые они имеют на сайте № 1, введите его на сайте № 2, и он авторизует их на сайте № 2.

Возможно ли это?

Web.config сайта# 1:

<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>
....

Web.config сайта # 2:

<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.

Но когда я звонюMembership.ValidateUser(userName, password) на сайте # 2, всегда возвращается false.

1 Ответ

0 голосов
/ 08 мая 2019

Я выяснил проблему:

Я пропустил applicationName="/" в файле # 2 web.config.Теперь, когда applicationName s установлены одинаково, он работает правильно.

...