У меня есть служба WCF, которая возвращает объект, который реализует как IPrinciple, так и IIdentity.
Я предполагал, что каким-то образом смогу подключить это к системе авторизации MVC3 без необходимости создания RoleProvider
например. так что я мог бы сделать что-то подобное в моем методе входа AccountController:
// AthenticatedUser implments both IPrinciple and IIdentity
AthenticatedUser user = wcfService.Logon(password, userName);
FormsAuthentication.SetAuthCookie(userName, false);
// Set IPrinciple so I can use IsInRole method elsewhere (or AuthorizationAttribute can reuse it)
this.HttpContext.User = authenticationClient.AuthenticatedUser;
Тогда каким-то волшебством, когда я использую
[Authorize (Roles = "foo", "bar")]
вызывается метод IsInRole моего AuthenticatedUser.
Однако в моем тестировании / отладке я обнаружил, что this.HttpContext.User, похоже, не поддерживается между запросами.
Редактировать извините: я должен был дать понять, что не хочу вызывать свою службу WCF при каждом запросе, я бы хотел как-то кэшировать / сохранить пользователя и роли и иметь возможность использовать AuthorizeAttribute с Принцип IP исходит от моего сервиса.
Кто-нибудь может помочь? Заранее спасибо!