#asp.net-mvc
Вопрос:
Я разработал приложение MVC с авторизацией, которое отлично работает. В моем приложении пользователь может щелкнуть ссылку для просмотра документа. Документ отобразится на другой вкладке. Если пользователь сохранит эту ссылку, выйдет из системы и вернется (без входа в систему), он может вставить ссылку в браузер, чтобы просмотреть документ. Они также могут изменять параметры в ссылке для просмотра документов, которые могут быть или не быть связаны с их учетной записью. Ссылка создается как:
@Html.ActionLink("View", "CertificatePDF", "Documents", new { wo_nbr = Model.id}, new { target = "_blank" })
Это создает следующую ссылку:
http://xxx.yyy.com/Documents/CertificatePDF?wo_nbr=1000462209
Как я могу запретить пользователям просматривать/изменять документы, если они не вошли в приложение?
Комментарии:
1. Вы добавили
[Authorize]
атрибут к своемуCertificatePDF
действию?2. Да, я это сделал. Когда я это сделаю, документы также не будут открываться из моего приложения. Я думаю, что проблема связана с тем, что я открываю новую вкладку в браузере… но не знаю, что с этим делать…
3. Тогда происходит что-то еще, если ваши пользователи вошли в систему, они должны иметь возможность загрузить pdf-файл с атрибутом авторизации. При наличии атрибута будут ли поражены ваши точки останова?
4. Я перепроверил, и теперь это работает! Большое спасибо за ваш совет!
5. Как мне отметить комментарий в качестве ответа?
Ответ №1:
Добавьте [Authorize]
атрибут к своему CertificatePDF
действию. Для этого необходимо, чтобы пользователи прошли проверку подлинности. Вы можете добавить атрибут в свой класс контроллера, если хотите, чтобы все требовало аутентификации. Также для обратного вы можете добавить [AllowAnonymous]
атрибут для обхода аутентификации.