перенаправление на ранее просмотренную веб-страницу после окончания сеанса - PullRequest
1 голос
/ 22 февраля 2012

Я занимаюсь разработкой сайта с использованием asp.net.На моем веб-сайте после входа в систему я установил сеанс для зарегистрированного пользователя для моего веб-сайта.и на каждой странице я проверял, является ли этот сеанс пустым или имеет значение, и в зависимости от значения, которое я перенаправил на страницу входа.

Моя проблема в том, что после входа я хочу перенаправить на ранее просмотренную веб-страницу, и ясделать это, используя следующий способ -

код на конкретной странице для проверки значения сеанса -

if (Session["EmployeeID"] != null)
    {

    }
    else
    {
        Response.Redirect(ResolveUrl("~/login.aspx?IsTimeout=1"), true);
    }

код на странице входа в систему -

If Request.QueryString("IsTimeout") IsNot Nothing Then
   If Request.QueryString("IsTimeout") = "1" Then
      Login1.DestinationPageUrl = Request.UrlReferrer.ToString()
   End If
End If

Есть ли другой способ сделать это правильно?

Ответы [ 5 ]

3 голосов
/ 22 февраля 2012

Я не уверен в правильном пути ... но я делаю что-то вроде этого ..

У меня есть функция, которая запрашивает страницу входа и передает параметр реферера

    protected void RequestLogin()
    {
        string OriginalUrl =  HttpContext.Current.Request.RawUrl;
        string LoginPageUrl = "~/LogIn.aspx";
        HttpContext.Current.Response.Redirect(String.Format("{0}?ReturnUrl={1}", 
        LoginPageUrl, OriginalUrl));
    }

и вот перенаправление после входа в систему.

   if (this.Request.QueryString["ReturnUrl"] !=null) 
   {
        this.Response.Redirect(Request.QueryString["ReturnUrl"].ToString());
   }
   else
   {
        this.Response.Redirect("Default.aspx");
   }
0 голосов
/ 02 декабря 2013

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

// In Login Page ..
// I used a submit button to figure out the event of my code ..
protected void ButtonInsert_Click(object sender, EventArgs e)
{
    Session.Add("EmployeeID", 100); // This 100 is just a fixed value ..

    if (!String.IsNullOrEmpty(Request.QueryString["Red_Page"]))
    {
        Response.Redirect(Request.QueryString["Red_Page"]);
    }
    else
    {
        Response.Redirect("EmployeeDepartment.aspx");
    }
}

// In Master Page ..
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // In Master Page 
        if (Session["EmployeeID"] != null)
        {
            // Write ur business Code 
        }
        else
        {
            // I stored the Page URL in uery String.
            // Stroing the URL in a cookie will be also a good alternative solution ..
            string CurrentURLBeofreTimeout = Request.RawUrl;
            string LoginURL = "login.aspx";
            string newURL = string.Format("{0}?Red_Page={1}", LoginURL, CurrentURLBeofreTimeout);
            Response.Redirect(newURL);


        }
    }

}
0 голосов
/ 22 февраля 2012

Есть ли другой способ сделать это правильно?

Ну, я бы сказал, что есть. Не переписывайте аутентификацию, тайм-ауты и перенаправление, когда ASP.NET предлагает аутентификацию форм .NET. Если время сеанса истекло, он автоматически добавит ReturnUrl, который вы сможете обработать в своем коде аутентификации. Проверьте эту ссылку для получения исходного кода и обсуждения реализации проверки подлинности с помощью форм, а также использования некоторых других ее возможностей ...

0 голосов
/ 22 февраля 2012

Сохранение URL предыдущей страницы для просмотра состояния, когда страница перенаправлена ​​с другой страницы и когда генерируется обратный вызов, затем перенаправляется на последнюю страницу.

Попробуйте это:

protected void Page_Load(object sender, EventArgs e) 
{ 
     if( !IsPostBack ) 
     { 
         ViewState["RefUrl"] = Request.UrlReferrer.ToString(); 
     }
     if (Session["EmployeeID"] != null)  
     {  

     }  
     else  
     {  
         object refUrl = ViewState["RefUrl"]; 
         if (refUrl != null) 
             Response.Redirect((string)refUrl);
     }  
}

Ref: Как вернуться на предыдущую страницу в ASP.NET 2.0
Форум Asp.net - перенаправить на предыдущую страницу RSS

0 голосов
/ 22 февраля 2012

Вы можете сделать это, используя Request.UrlReferrer.ToString (). Это даст вам имя последней страницы, на которой был пользователь. Тогда вы можете сделать response.redirect (Request.UrlReferrer.ToString ()) или что-то в этом роде. Извините за псевдокод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...