Домен пользователя sitecore и роли с нулевым значением
У меня есть настройка sitecore с внешней страницей входа для пользователей экстрасети, чтобы получить доступ к закрытым страницам на сайте.
В настоящее время пользователи экстрасети входят в систему с постоянным флагом
global::Sitecore.Security.Domains.Domain domain = global::Sitecore.Context.Domain;
var isLogginedIn = AuthenticationManager.Login(domain + @"\" + email, password, true);
Это работает успешно, и контекст установлен правильно.
Ниже выводится из непосредственного окна после входа в систему в рамках того же запроса.
global::Sitecore.Context.User.Domain
extranet
global::Sitecore.Context.User.Roles.Count()
1
global::Sitecore.Context.User.IsAuthenticated()
true
После входа в систему пользователь перенаправляется на страницу, к которой он хотел получить доступ.
Ниже выводится окно непосредственного вывода любых последующих запросов.
global::Sitecore.Context.User.Domain
null
global::Sitecore.Context.User.Roles.Count()
0
global::Sitecore.Context.User.IsAuthenticated()
true
У кого-нибудь есть идеи, почему я могу потерять некоторые элементы контекста при последующих запросах?
заранее спасибо
3 ответа
Это скорее патч, чтобы скрыть эту проблему, а не правильное решение, но я опубликую кого-либо только на тот случай, если у кого-то еще появятся какие-либо идеи по этому поводу.
Я вызываю следующий код во время пользовательского конвейера
if (user.Domain == null && user.IsAuthenticated)
{
var domainUser = string.Format(@"extranet\{0}", user.LocalName);
var membershipUser = Membership.GetUser(domainUser);
if (membershipUser != null)
{
AuthenticationManager.Login(domainUser, membershipUser.GetPassword(), true);
}
}
После этого у пользователя правильно установлены домен и роли. Как ни странно, все остальные запросы после этого имеют правильно настроенного пользователя.
У меня была именно эта проблема, когда домен пуст, а роли пустые. Причиной было то, что я использовал элемент управления asp:Login для входа в систему. Когда я заменил его на стандартные элементы управления Text, Password и Button, проблема исчезла.
Похоже, вы пытаетесь создать свою собственную страницу входа для Sitecore. В этом случае вы можете попробовать начать logginging
трубопровод вместо вызова AuthenticationManager.Login
метод:
var loggingInArgs = new LoggingInArgs
{
Username = userName,
Password = password,
StartUrl = startUrl
};
Pipeline.Start("loggingin", loggingInArgs);
bool isLogginedIn = loggingInArgs.Success;