2013-12-07 5 views
-1

Я работаю в WEB-проекте на основе ASP.NET и C#. Это не новый проект, я просто исправляю некоторые ошибки и делаю некоторые обновления.Как перенаправить URL, указанный после входа в систему

Веб-сайт работает, как если бы вы не вошли в систему и не указали URL-адрес в зависимости от веб-сайта, он перенаправляет вас на страницу входа. Затем, если вы входите в систему успешно, он перенаправляет вас на начальную страницу.

Например, «открытие.aspx» - это открытая страница, а «vendors.aspx» - это другая страница на веб-сайте. Если вы пишете «..../projectname/vendors.aspx» в браузере, вы перенаправляетесь на «..../projectname/login.aspx», а затем после вашего входа вы перенаправлены на «... ./projectname/opening.aspx "

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

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

Примечание. Проект основан на трехмерной архитектуре с WEB, BUS, DAL и COM-слоями, а WEB-страницы используют пользовательские элементы управления на каждой странице вместо входа и по умолчанию.

ответ

2

Обычно, когда asp.net перенаправляет, он помещает запрошенную страницу в URL-адрес в параметре querystring ReturnUrl. Вы должны быть в состоянии сделать что-то вроде ...

if (Request.QueryString["ReturnUrl"] != null) 
    Response.Redirect(Request.QueryString["ReturnUrl"]); 

Если вам нужно сделать что-то особенное, вы можете сохранить исходную страницу, которая находится в ReturnUrl в чем-то вроде сеанса или в базе данных, а затем перенаправить после открытия страницы, а что нет.

+0

Во-первых, спасибо за ответ. Теперь у меня есть класс типа «BasePage», который каждая страница наследует. Поэтому, хотя я ввожу URL-адрес, тогда Request.QueryString ["ReturnUrl"] в Page_Init в этом классе должен вернуть URL-адрес, который я написал. Однако он возвращает null. Любая идея, чтобы проверить это? –

+1

ну, скорее всего, только на странице входа, так что как вы справитесь с этим, нужно будет там. Поскольку кажется, что вы выполняете несколько переадресаций, вам нужно будет сохранить исходное значение ReturnUrl где-то вроде состояния сеанса или в строке запроса. Я предполагаю, что у вас есть что-то вроде ... FormsAuthentication.RedirectFromLoginPage', вы захотите справиться с этим сами, если не можете использовать состояние сеанса и просто выполните что-то вроде Response.Redirect («Opening.aspx? Source = "+ HttpUtility.UrlEncode (Request.QueryString [" ReturnUrl "]))' –

+0

Ouw, я только что заметил, что перенаправление сделано на главной странице, и я думаю, что теперь смогу справиться с этим. Кстати, код, который вы написали, не сработал, но вместо этого я использовал Request.Path, а затем устранил некоторые его части. У меня есть еще один вопрос: Request.Path не возвращает часть строки запроса? –

2

я думаю, что и должны использовать куки и seesion, когда пользователь вошел в деталях пользователя сохраняется в куки

и в следующий раз, когда пользователь вводит URL-адрес и может проверить его на MasterPage того, что страницы, которые куки доступны или нет, если детали доступная тогда страница текущего сайта обуви, иначе переадресовать на страницу входа

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