Как перейти на страницу участника со страницы, не являющейся участником, когда пользователь входит в систему? - PullRequest
0 голосов
/ 10 июля 2009

У меня есть две страницы, NonMember.aspx и Member.aspx. Если пользователь заходит на сайт, он переходит на NonMember.aspx, как только он входит в систему, я хочу, чтобы он сразу же перенаправлялся на Member.aspx, но вместо этого он остается на NonMember.aspx. Пользователь фактически должен щелкнуть по пункту меню снова, чтобы перейти к Member.aspx.

Ссылки расположены по адресу http://abc.com/tools/NonMember.aspx и http://abc.com/tools/Member.aspx.

Я делал:

System.IO.Path.GetFileNameWithoutExtension(Request.Url.ToString());

но я думаю, что есть лучший способ, тем более что у меня есть несколько страниц default.aspx, и это может создать проблему

Вот более подробно о том, что именно я делаю:

Когда я запускаю сайт на своем локальном компьютере разработки, страница NonMember указывает на:

http://testserver/tools/NonMember.aspx.

Requet.Url.AbsolutePath указывает на /testserver/tools/NonMember.aspx.

Тогда я делаю это:

if(url == "~/tools/NonMember.aspx")
{
    Response.Redirect("~/tools/Member.aspx");
}

Вышеуказанное не работает, и я могу проверить, равен ли url /testserver/tools/NonMember.aspx, потому что, если я разверну его на liveserver, произойдет сбой.

Ответы [ 5 ]

1 голос
/ 10 июля 2009

При использовании проверки подлинности с помощью форм для приложения ASP.NET оно автоматически перенаправляет вас на страницу, которую вы просматривали до входа в систему. Вот почему вы перенаправлены обратно на страницу NonMember.aspx.

Было бы лучше, если бы у вас была только одна страница участника, и выполните проверку на странице, чтобы проверить, прошел ли аутентификация пользователя, если да, отобразить содержимое участника, в противном случае, отобразить содержимое, не принадлежащее участнику.

Затем, когда пользователь входит в систему и перенаправляется обратно на страницу, он видит содержимое участника.


Если вы настаиваете на сохранении двух отдельных страниц, то при проверке вы просто должны проверить, прошел ли аутентификация текущий пользователь (через свойство IsAuthenticated для пользователя, который открывается через страницу), а затем перенаправить его своим членам. стр. Если вы находитесь на странице NonMember, вам не нужно проверять, что это за URL (если это не MVC, который вы не указали).

0 голосов
/ 10 июля 2009

Я просто сделал следующее:

if(Authenticated)
{
    string path = Request.UrlReferrer.AbsolutePath;

    if (path.EndsWith("/tools/NonMember.aspx"))
    {
        Response.Redirect("~/tools/Member.aspx");
    }
}
0 голосов
/ 10 июля 2009

Я не уверен, что понял ваш сценарий, но давайте попробуем.

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

РЕДАКТИРОВАТЬ: Вы должны проверить на Request.FilePath

0 голосов
/ 10 июля 2009

Вам следует проверить файл cookie или переменную сеанса, чтобы убедиться, что пользователь вошел в систему, а затем использовать Response.Redirect, чтобы переместить его на страницу участника.

0 голосов
/ 10 июля 2009

Если у вас есть объект HttpResponse, вы можете использовать HttpResponse.Redirect

...