Лучший способ сделать это - написать собственный модуль аутентификации и подключить его к вашему приложению. Этот модуль будет выполняться перед любым запросом и будет иметь возможность установить свойство HttpContext.User соответствующим образом.
Например, рассмотрим модуль проверки подлинности с помощью форм. Перед запуском вашего обработчика HTTP (будь то страница ASPX, конвейер MVC и т. Д.) Он может перехватить запрос. Он считывает значение файла cookie входа в систему, расшифровывает и проверяет зашифрованное значение файла cookie и устанавливает HttpContext.User, если проверки пройдены. Таким образом, когда обработчик запускает и обрабатывает запрос, свойство User уже установлено правильно.
В конце концов, это будет выглядеть так, как будто вам не нужен настраиваемый атрибут авторизации в ASP.NET, поскольку атрибут [Authorize], уже предоставленный в поле, должен автоматически работать с вашим модулем аутентификации. Однако вашему методу AccountController.LogOn () (или тому, что вы используете вместо этого) нужно будет связаться с соответствующим поставщиком аутентификации, который генерирует токен, который будет проверен модулем аутентификации. Это должно быть единственное место, где вам нужно написать код, отличный от того, который предоставляется в коробке.
См. http://social.msdn.microsoft.com/Search/en-US?query=http%20modules и http://social.msdn.microsoft.com/Search/en-US?query=custom%20authentication%20asp.net для получения дополнительной информации.