Я использую успешно настраиваемую авторизацию в ASP.NET MVC. Это просто связано с сравнением между User.Identity и владельцем объекта в контексте.ASP.NET MVC Авторизация и гиперссылки
Он работает как очарование при использовании в простых условиях. Это становится сложнее, когда я пытаюсь вызвать 2 действия в одном веб-запросе.
Допустим, я хочу отобразить изображение, которое будет создано «на лету» моим приложением. Это изображение генерируется контроллером, поэтому на него может ссылаться URL-адрес, даже если он физически не существует. Я решил, что пользователь должен быть подписан и быть владельцем, чтобы просмотреть его, поэтому я применяю к нему свой механизм авторизации.
Пример: < IMG SRC = «http://myapplication.com/images/generate/3»/>
Когда я включать такое изображение в странице через его действие гиперссылки, я ожидать, что проверка подлинности пользователь будет по-прежнему находиться в контексте на стороне сервера при генерации изображения. Это не так в моих тестах. Изображение никогда не отображается, потому что моя проверка авторизации не работает. В контроллере изображения User.Identity пуст, как если бы пользователь не подписал его.
В то же время один и тот же пользователь по-прежнему подписывается на веб-сайт и может продолжать просматривать свою личность в контексте ... без правильного изображения этих изображений.
Интересно, как сделать этот процесс работать надежно ...
Большое спасибо!
Marc Lacoursiere RooSoft Computing inc.
Вы уверены, что два запроса будут сделаны в одном потоке? – RooSoft
Я не понимаю, почему было бы два потока? Сначала выполняется запрос для отображения страницы с вашим тегом img внутри нее (а не фактическими битами изображения). Затем, как только браузер отобразит тэг img, запрос будет отправлен вашему контроллеру для получения вашего изображения. В обоих случаях активен только один поток? – Peter
Интересно, можем ли мы полагаться на этот факт из-за характера безгражданства ASP.NET MVC в первую очередь ... Теоретически, при настройке балансировки нагрузки два запроса могут быть выполнены на двух разных серверах, что подразумевает два разных потока. – RooSoft