2013-05-05 2 views
0

Это, кажется, очень мелочный вопрос, но все же я не могу его запустить. Я создаю веб-приложение asp.net, и здесь я использую проверку подлинности. Следующие шаги я выполнил.Session.Abandon автоматически не перенаправляется на loginurl в 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), в поле Logout linkbutton click event Я пытаюсь отказаться от сеанса, чтобы он автоматически перенаправлялся на 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(); 
     } 

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

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

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

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

Заранее благодарен.

С уважением,

Самар

ответ

0

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

+0

Привет, Прашант Я все еще не могу заставить его работать. Я попробовал следующее. 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 – samar