(Использование кавычек, потому что я не думаю, что это строго случай использования единого входа. Хотя это та же концепция.)
У меня есть существующий сайт ASP.NET Web Forms
(SiteA
)используя Membership
...
Web.config:
<machineKey validationKey="etc"
decryptionKey="etc"
validation="SHA1"
decryption="AES" />
<authentication mode="Forms">
<forms name="goodcookie"
loginUrl="~/login"
timeout="2880"
defaultUrl="~/" />
</authentication>
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="etc"
applicationName="etc" />
</providers>
</membership>
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="etc"
applicationName="etc"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider" />
</providers>
</roleManager>
Код кнопки входа в систему:
if (Membership.ValidateUser(txtUsername.Value, txtPassword.Value))
{
FormsAuthentication.SetAuthCookie(txtUsername.Value, true);
Response.RedirectToRoute("home");
}
Код главной страницы для каждой загрузки страницы:
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
Response.Clear();
Response.Redirect("/login", true);
}
Требуется создать новый сайт (SiteB
) на отдельном домене, однако и SiteA
, и SiteB
будут использовать одну и ту же базу данных.
Некоторые пользователи будут иметь толькодоступ к SiteA
, некоторые только к SiteB
, а некоторые к SiteA
и SiteB
.Это будет определяться их ролью.
Я создал SiteB
с идентичными значениями в Web.config
(то же имя файла cookie, тот же ключ компьютера и т. Д.).Даже одно и то же имя приложения просто для проверки.Конечно, я могу войти на оба сайта с одинаковыми учетными данными, но .. если я вошел в систему SiteA
и загрузил SiteB
, он будет вести себя так, как будто я не аутентифицирован (т.е.. перенаправьте меня на страницу входа.)
Чего мне не хватает?
(Отредактирую, если у меня возникнут какие-либо более важные детали)