Наиболее вероятный сценарий: вы кэшируете результаты на стороне сервера и не изменяете кэшированную информацию пользователем. Либо вам нужно изменить кеширование параметром, связанным с пользователем, либо самим пользователем (используя VaryByCustom).
Пример:
[AuthorizeByUser( Roles = "Admin" )]
[OutputCache( Location = OutputCacheLocation.Server, VaryByParam="*", Duration = 500 )]
public ActionResult Profile( int id )
{
...
}
Изменение всех параметров здесь означает, что каждое значение параметра id будет иметь различную запись в кэше. Здесь мы предполагаем, что id связан (возможно, есть) с идентификатором пользователя, поэтому у каждого пользователя будет отдельная кэшированная запись. Обратите внимание, что ваша безопасность (AuthorizeByUserAttribute) также должна быть настроена так, чтобы она не обслуживала кэшированные результаты неавторизованным пользователям. Здесь я предполагаю реализацию, производную от AuthorizeAttribute, которая проверяет, что пользователь находится в роли «Администратор» или имеет идентификатор пользователя, связанный с идентификатором в сигнатуре метода. Посмотрите мой пост в блоге о пользовательской авторизации, чтобы узнать, как это сделать: http://farm -fresh-code.blogspot.com / 2011/03 / revisiting-custom-authorization-in.html .