response.redirect от одного веб-приложения asp.net к другому - PullRequest
2 голосов
/ 06 января 2012

У меня есть файл решения VS 2011 с двумя проектами, каждый из которых является файлом проекта для веб-приложения.Одна - это более старая версия приложения, а другая - более новая версия.Когда пользователь входит в старую версию, в зависимости от его членства, он может быть перенаправлен в новую версию.Когда они попадают на новый веб-сайт, им не нужно проходить проверку подлинности, а вместо этого переходить непосредственно на свою страницу в приложении.

Для этого я использую response.redirect из более старого приложения вместе со строкой запроса, указывающей, что пользователь прошел аутентификацию.

код в более старой версии:

Response.Redirect(sURL + "?Auth=" + sAuth, false);

Я проверяю строку запроса в событии page_load файла login.aspx.cs нового приложения (что-то вроде «if requeststring authentication = true»затем перейдите к следующей странице ").Тем не менее, я все еще получаю страницу входа.

Код события page_load нового приложения:

if (Page.IsCrossPagePostBack)
{
    string sAuthenticate = Request.QueryString.Get("Auth").ToString();
            if (sAuthenticate == "1")
            {
                ByPassAuthentication();
            }
}

Как я могу обойти страницу входа?

Ответы [ 5 ]

3 голосов
/ 06 января 2012

Предполагая, что это сайт FormsAuthentication, ASP.Net автоматически вернет пользователя на страницу входа в систему, если он не был зарегистрирован в FormsAuthentication.

Таким образом, вам придется, по крайней мере, пройтитакже имя пользователя для входа.

Поскольку вы передаете это в строке запроса, вам нужно быть очень осторожным, чтобы гарантировать, что только ваш response.redirect обрабатывается как действительный запрос.Вы не хотите, чтобы какой-либо пользователь мог войти в систему, выяснив, что является параметром строки запроса, и войдя в систему как генеральный директор компании.

Мы делаем это путем шифрования комбинации имени пользователя итекущее время, затем на принимающем конце мы расшифровываем и сравниваем отметку времени.Если оно выходит за пределы допустимых значений (например, 2 минуты), мы отклоняем запрос на вход.

1 голос
/ 02 февраля 2012

Вы можете отладить это, щелкнув правой кнопкой мыши свое решение, щелкнув Свойства, а затем запустите два проекта.Посмотрите здесь Запуск двух проектов одновременно в Visual Studio .Конечно, поставить точку останова на обоих проектах

1 голос
/ 06 января 2012

Возможно, единый вход поможет вам, проверьте мой вопрос и ответьте здесь.

Единый вход

0 голосов
/ 06 января 2012

Вам необходимо аутентифицировать пользователя после того, как вы зашли на «новый» сайт.Предполагая, что вы используете аутентификацию .NET Forms, вы, вероятно, устанавливаете куки-файл аутентификации с кодом, подобным этому:

FormsAuthentication.SetAuthCookie(userLogin, true);

Когда вы делаете это, он создает куки для пользователя, который используется для последующих запросовсайт был создан.В вашем случае «старый» сайт.Поэтому вам нужно либо создать новый файл cookie для проверки подлинности, либо поделиться файлами cookie для проверки подлинности, которые имеют несколько нюансов и могут быть неприятными.

0 голосов
/ 06 января 2012

Вы можете попробовать проверить свойство " IsCrossPagePostBack " на новой странице ... тогда вы узнаете, было ли сообщение назад перенаправлением.

...