Asp.NET : Login olduktan sonra önceki sayfaya dönme (redirect)

Şayet  Forms Authentication kullanıyorsanız ReturnUrl querystring’ini Login sayfanızda kullanabilirsiniz :

var returnUrl = Request.QueryString["ReturnURL"];
if (string.IsNullOrEmpty(returnUrl)){
   returnUrl = "~/";
}
Response.Redirect(returnUrl);

Fakat kullanmıyorsanız yönlendirme (redirect) yapıtığınız sayfaya bir querystring göndermelisiniz.

var returnUrl = Server.UrlEncode(Request.Url.PathAndQuery);
Response.Redirect("~/login.aspx?ReturnURL=" + returnUrl);

Alternatif olarak cookie’leri kullanabilirsiniz. Benim tavsiyemde cookie kullanmanız çünkü adres çubuğu temiz görünür ve daha güzel bir yöntem. Diğer yandan bu yöntem kullanıcı için dahaşeffaftır çünkü kötü niyetli kullanıcıların login sayfasından istenmeyen web sitelerine yönlendirme yapmalarının öüne geçilir.

Kodlarımız iki bölümden oluşacak. İlk olarak kullanıcıyı login sayfasına yönlendirmeden önce bir cookie oluşturuyoruz ve daha sonra yönlendiriyoruz.

Response.Cookies.Add(new HttpCookie("returnUrl", Request.Url.PathAndQuery));
Response.Redirect("login.aspx");

Daha sonra login sayfamızada cookie kontrolü yapıp şayet cookie boş değilse login işlemide başarıyla gerçekleştiyse kullanıcıyı “returnUrl” adı ile sakladığımız sayfaya yönlendiriyoruz ve cookie’yi kaldırıyoruz.

HttpCookie returnCookie = Request.Cookies["returnUrl"];
if((returnCookie == null) || string.IsNullOrEmpty(returnCookie.Value))
{
    Response.Redirect("Default.aspx");
}
else
{
    HttpCookie deleteCookie = new HttpCookie("returnUrl");
    deleteCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(deleteCookie);
    Response.Redirect(returnCookie.Value);
}

Kolay Gelsin

Muavenet

Web teknolojilerine merak salmış bir bilgisayar mühendisinin yazıları

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir