Как создать CustomPrincipal глобально (с AuthorizeAttribute и без него)

У меня есть пользовательский принципал / личность для моего веб-приложения ASP.NET MVC4. Я также создал AuthorizeAttribute для создания экземпляра своего пользовательского участника, назначив его httpContext.User в контроллерах, где мне требуется аутентификация.

Это прекрасно работает для контроллера / действий, которые были украшены моим AuthorizeAttribute,however, for controllers that don't require authentication (but still use it if it is there), I would like to get my CustomPrincipal (and preferably through HttpContext.User).

В этих непокрытых контроллерах / действиях устанавливается HttpContext.User, но с GenericPrincipal, а не с моим CustomPrincipal.Where would the best place to 'override' the default setting of a HttpContext.User to the GenericPrincipal?

Кроме того, если это делается в каждом запросе, который имеет файл cookie аутентификации,how would I then avoid doing the work twice in the case of a AuthorizeAttribute decorated controller (который затем станет обязательным для аутентификации).

Просто чтобы быть понятным, мой сайт разрешает доступ анонимным пользователям, но на этих страницах, если они аутентифицированы (и реализован CustomPrincipal), предусмотрены дополнительные функции.

Я думаю, что некоторые из вариантов (не уверен в моей логике каждого из них):

use a session (and handle logic to create what i need here, forgetting about Principals) Application_AuthenticateRequest - seen comments around the web that this is old school Custom filters set on a base controller Create an AuthorizationAttribute on the base controller that lets everyone through and sets up the HttpContext.User as I want it IHttpModule - this seems like a descent way (and heading down this path unless others disagree).

Мысли?

Ответы на вопрос(2)

Ваш ответ на вопрос