none
Login Sonrası Url Yönlendirme Sorunu RRS feed

  • Soru

  • Kullanıcının Session'ı düştükten sonra kaldığı sayfayı masterpage de  yer alan şu kod ile login.aspx'e yönlendiriyorum. 

          if (Session["AdminID"] == null)
            {
    
                Response.Redirect("Login.aspx?ReturnUrl=" + HttpContext.Current.Request.Url.AbsoluteUri);
    
            }


    Gelen değişkeni querystring ile alıp şu şekilde login de butona bastığında ReturnUrl boş ise anasayfaya dolu ise gelen değere yönlendirme yapıyorum.

          string returnUrl1, url;
                url = Request.QueryString["ReturnUrl"];
                if (url == null)
                {
                    returnUrl1 = "PanelDefault.aspx";
                }
                else
                {
                    returnUrl1 = url.ToString();
                }
    
                Response.Redirect(returnUrl1);

    Ancak sorunum şu örneğin url şu şekilde olduğu zaman sorun oluyor.

    Login.aspx?ReturnUrl=http://www.siteadi.com/KonuEkle.aspx?islem=duzenle&KonuID=1

    bu şekildeki bir linkte sadece http://www.siteadi.com/KonuEkle.aspx?islem=duzenle buraya kadar bir yönlendirme oluyor doğal olrak linkte başka değerler olduğu için hata oluşuyor.Bu sorunu nasıl çözerim acil yardım.

    14 Eylül 2017 Perşembe 12:29

Yanıtlar

  • Birinci yöntem,

    & işareti yerine %26 yazarak returnurl yi oluşturun. Querystring sonrasında da tekrar %26 yerine & karakterini koyup sonra  redirect  metodunu çağırın...

    İkinci yöntem,

    UrlEncode ve UrlDecode kullanın...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen Yusuf Kılıç 14 Eylül 2017 Perşembe 19:51
    14 Eylül 2017 Perşembe 19:42

Tüm Yanıtlar

  • Cem bey yanıtınız için teşekkürler ancak bunu zaten biliyorum.Sorum bu değil  ben kullanıcı sisteme giriş yaptı örneğin panelde bir veriyi düzenlerken o sayfada işelm yapmadı o arada session düştü ve sistem kaldığı sayfayı

        if (Session["AdminID"] == null)
            {
    
                Response.Redirect("Login.aspx?ReturnUrl=" + HttpContext.Current.Request.Url.AbsoluteUri);
    
            }

    bu şekilde logine yönlendirdi eğer Returnurl doluysa kaldığı sayfaya boş ise anasayfaya yönlendiriyor. Ancak Request.Querystring gelen linkteki & işaretine kadar linki alıyor doğal olarak. Buradaki sorunum o tam urlyi nasıl alıp yönlendirebilirim.  

    14 Eylül 2017 Perşembe 18:43
  • Birinci yöntem,

    & işareti yerine %26 yazarak returnurl yi oluşturun. Querystring sonrasında da tekrar %26 yerine & karakterini koyup sonra  redirect  metodunu çağırın...

    İkinci yöntem,

    UrlEncode ve UrlDecode kullanın...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen Yusuf Kılıç 14 Eylül 2017 Perşembe 19:51
    14 Eylül 2017 Perşembe 19:42
  • Murat bey çok teşekkür ederim... Kodları paylaşıyorum.

    MasterPage Kısmındaki Session kontrolü

           if (Session["AdminID"] == null)
            {
                    Response.Redirect("Login.aspx?ReturnUrl=" + HttpContext.Current.Server.UrlEncode(HttpContext.Current.Request.Url.AbsoluteUri));
            } 

    Login.aspx kısmındaki Giriş butonunun clik olayındaki login kontrolünden sonraki yönlendirme işlemi

               string returnUrl1, url;
                url = Server.UrlDecode(Request.QueryString["ReturnUrl"]);
                if (url == null)
                {
                    returnUrl1 = "PanelDefault.aspx";
                }
                else
                {
                    returnUrl1 = url.ToString();
                }
    
                Response.Redirect(returnUrl1);

    14 Eylül 2017 Perşembe 19:53