Session.Abandon не перенаправляет автоматически на loginurl в asp.net

Это кажется очень тривиальным вопросом, но все же я не могу его запустить. Я создаю веб-приложение asp.net и использую здесь проверку подлинности с помощью форм. Я выполнил следующие шаги.

1) В web.config это запись


    <authentication mode="Forms">
          <forms loginUrl="Default.aspx" timeout="30" defaultUrl="StockTips.aspx" cookieless="UseCookies"
                 slidingExpiration="true" />
        </authentication>
        <sessionState mode="InProc" cookieless="false" timeout="30" />

2) В default.aspx я использовал пользовательскую аутентификацию, и после прохождения аутентификации я перенаправляю на defaultUrl, упомянутый в web.config. Ниже приведен код. Это нормально работает.

Session["test"] = "testing";
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);

Login1 - это контроль входа на asp.net.

3) В StockTips.aspx (который является defaulturl) при событии нажатия кнопки выхода из системы я пытаюсь прервать сеанс, чтобы он автоматически перенаправлялся на loginurl (default.aspx). Этого не происходит. Он остается на той же странице, то есть StockTips.aspx. Ниже приведен код.

        protected void lnkLogout_Click(object sender, EventArgs e)
        {
            string str = Session["test"].ToString();

            Session.Abandon();
            //Session.RemoveAll();
            //Session.Clear();

            //FormsAuthentication.SignOut();

            string str1 = Session["test"].ToString();
        }

Значение в Session ["test"] также остается. Я пробовал закомментированный код выше. Я не хочу явно писать Response.Redirect для loginurl, поскольку я почти уверен, что после выхода из сеанса он автоматически перенаправляется на loginurl. Но как-то не получается.

Я не уверен, поможет ли следующая информация, но все же подумал о ее добавлении. У меня есть главная страница, на которой открываются как default.aspx, так и stocktips.aspx. LinkButton внутри stocktips.aspx, а не на главной странице.

Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация с моей стороны.

Пожалуйста помоги!

Заранее спасибо.

С уважением,

Самар


person samar    schedule 05.05.2013    source источник


Ответы (1)


Я думаю, что вы делаете правильно с сессиями. Но посмотрите, в вашем файле web.config вы включили куки для аутентификации с помощью формы. Несмотря на то, что вы удалили сеансы, cookie с данными аутентификации остается в браузере (время ожидания cookie = 30 минут). Таким образом, данные аутентификации остаются в файле cookie до истечения времени ожидания или до закрытия браузера. Попробуйте удалить cookie вместо удаления сеансов.

person Prashant    schedule 06.05.2013
comment
Привет, Прашант, я все еще не могу заставить его работать. Я пробовал следующее. Response.Cookies.Remove (ASP.NET_SessionId); Response.Cookies [ASP.NET_SessionId] .Value = string.Empty; Response.Cookies.Add (новый HttpCookie (ASP.NET_SessionId,)); По-прежнему не удается заставить asp.net перенаправить на default.aspx - person samar; 06.05.2013