Как я могу запретить людям вставлять ссылки в документы?

#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] атрибут для обхода аутентификации.