Я пытаюсь сохранить целую загрузку информации о пользователе из веб-службы.Поскольку это информация о текущем аутентифицированном пользователе, я подумал, что имеет смысл хранить эту информацию в пользовательской реализации IIdentity.
Пользовательский MagicMembershipProvider.GetUser(string id, bool userIsOnline)
вызывает веб-службу и возвращает экземпляр MagicMembershipUser
со всеми заполненными полями (отдел, номер телефона, другая информация о сотруднике).
Поставщик настраиваемого членства и настраиваемое членствооба пользователя работают нормально.
Что и , где - лучший способ поместить информацию о членстве в объекте IPrincipal User
, который доступен в каждомконтроллер?
Я пытался обернуть свой мозг вокруг потока программ безопасности с помощью IIdentity, IPrincipal и Role авторизации в приложении 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;
}
}