Я пытаюсь сохранить весь грузовик информации о пользователе из веб-службы. Поскольку это информация о пользователе, прошедшем проверку подлинности, я подумал, что имеет смысл хранить эту информацию в пользовательской реализации IIdentity.MVC2 :: Как использовать * USE * пользовательский класс IIdentity?
Пользовательский MagicMembershipProvider.GetUser(string id, bool userIsOnline)
вызывает веб-сервис и возвращает экземпляр MagicMembershipUser
со всеми заполненными полями (отдел, номер телефона, другая информация о сотруднике).
Пользовательский поставщик членства и пользовательский членский пользователь оба работают нормально.
Что и где это лучший способ, чтобы поместить информацию пользователя членства в IPrincipal User
объект, который доступен в каждом контроллере?
Я пытаюсь обернуть мозг вокруг потока программ безопасности с помощью IIdentity, IPrincipal и авторизации роли в приложении MVC2, но я действительно борется здесь и могу использовать некоторое наставничество. Там есть Интернет-Тон статей о деталях, но не много о целом.
Редактировать
Моя догадка до сих пор назначить HttpContext.Current.User
в FormsAuthenticationService
:
public void SignIn(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName))
throw new ArgumentException("Value cannot be null or empty.", "userName");
try
{
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
MagicMembershipUser magicUser = _provider.GetUser("", false)
as MagicMembershipUser;
MagicIdentity identity = new MagicIdentity(userName, magicUser);
GenericPrincipal principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
}
catch (Exception)
{
throw;
}
}
Я заметил, что для _provider не существует экземпляра - почему? –
@ScottSEA, эта переменная '_provider' может быть любой, которая позволяет вам получать аутентифицированную информацию пользователя. –
Так было бы безопасно создать его здесь в этом методе? ... и по какой-то причине я получаю сообщение об ошибке «Нет подходящего метода для переопределения» для AuthorizeCore (HttpContextBase httpContext) –