Требовать от пользователя входа в систему для просмотра документа с помощью ASP.NET

Я работаю над сайтом, которому необходимо ограничить доступ к страницам и документам (.pdf, .doc и т. д.) для зарегистрированных пользователей. Для этого мы используем классы членства ASP.NET.

Но у меня возникли проблемы с тем, чтобы заставить его работать так, как хотелось бы, если кто-то щелкнет ссылку на документ до того, как он войдет на сайт. В настоящее время они будут перенаправлены на страницу входа в систему, и после успешного входа документ будет представлен в новом окне, но они все равно будут сидеть на экране входа в систему, когда закроют документ. Что можно сделать, чтобы отправить пользователя на страницу по умолчанию, а также загрузить документ?


person Ross Fuhrman    schedule 15.10.2009    source источник


Ответы (4)


Сначала создайте свою собственную страницу входа в систему; это довольно просто, поскольку ASP.NET Membership предоставляет методы для выполнения всех важных операций. Затем, прямо перед вызовом метода RedirectFromLoginPage, просмотрите значение параметра запроса ReturnUrl и, если это документ, вместо этого отправьте пользователя на страницу по умолчанию, передав URL-адрес документа либо в качестве параметра строки запроса, либо в состоянии сеанса. . Наконец, на странице по умолчанию определите, был ли передан URL-адрес документа, и если да, выполните перенаправление на стороне клиента (используя JavaScript или обновление META) к документу при загрузке страницы.

person William Gross    schedule 15.10.2009
comment
В итоге я реализовал это решение. - person Ross Fuhrman; 19.10.2009

Не могли бы вы сделать что-то, что, если ReturnURL содержит ссылку на фактический документ, вы устанавливаете свойство OnClientclick вашей «кнопки входа», чтобы вызвать функцию JavaScript для открытия файла в новом окне, а затем иметь Response.Redirect() взять человека с экрана входа?

person Jack Marchetti    schedule 15.10.2009
comment
Это не сработало для меня, так как JavaScript срабатывал до завершения входа в систему. - person Ross Fuhrman; 19.10.2009

Добавлены формы аутентификации. FormsAuthentication.RedirectFromLoginPage(txtUserid.Text.Trim(), false)

person Henry Gao    schedule 15.10.2009
comment
Поправьте меня, если я ошибаюсь, но это откроет документ (.pdf, .doc и т. д.), но когда окно документа будет закрыто, пользователь все равно будет на странице входа. - person Ross Fuhrman; 16.10.2009

Как сказал HenryGao, но не забудьте поместить тег в свою веб-конфигурацию и поставить deny users="?", чтобы разрешить только аутентифицированным пользователям.

<configuration>
   <system.web>
      <authorization>
         <deny users="?"/>
      </authorization>
   </system.web>
</configuration>
person Antony Koch    schedule 15.10.2009