2011-02-17 5 views
0

Я разработал приложение, основанное на ролях, и у меня есть такие роли, как Administrator, Operator .. на каждой странице, которую я проверяю, если текущий пользователь назначил роль, то ее разрешено. В моем случае Я хочу ограничить «Операторы», когда они вводят URL-адрес «Administrator.aspx» и попадают внутрь .. В этом случае, если пользователь находился на странице PAGE A и пытается попасть в адрес администратора, он должен перенаправить обратно в PAge A ..Page A могут быть любые другие имена страниц также .... как достичь этого я пытаюсь этот путь, но он не работает ..asp.net как вернуться на предыдущую страницу

 if (ViewState["URLReferrer"] == null) 
      ViewState["URLReferrer"] = Request.UrlReferrer; 

     if (!HttpContext.Current.User.IsInRole("Control User")) 
     { 
      //If user is trying to access the admin page ..send back to the page where he is coming from. 
      Response.Redirect(Convert.ToString(ViewState["URLReferrer"])); 
     } 
+0

получение «Ссылка на объект не установлена ​​в экземпляр объекта». ошибка ... – user239684

ответ

1

Я попробовал. UrlReferer имеет тип Uri, но вам нужно строку использовать Response.Redirect

if (Request.UrlReferrer == null || string.IsNullOrEmtpy(Request.UrlReferrer.AbsoluteUri)) 
    Response.Redirect("defaultPage") 
else 
    Response.Redirect(Request.UrlReferrer.AbsoluteUri); 

Приведенный выше код работает в моем веб-сайте тестирования. Попробуй.

+0

Будьте осторожны, чтобы это не было на 100% надежным. Это заголовок хоста, который может блокировать такие вещи, как антивирусные сканеры и прокси-серверы. вместо этого я бы использовал параметр querystring. – RPM1984

+0

получение «Ссылка на объект не установлена ​​в экземпляр объекта». ошибка. – user239684

+0

Вы имеете в виду, что все ссылки должны иметь retrunUrl querystring? – Danil

Смежные вопросы