2010-09-17 13 views
12

Bunu bir çok kez yaptığımı hissediyorum, ancak hayatımın yanlış giden şeyleri anlayamıyorum.ASP.NET - Response.Redirect URL'yi Yönlendiren Değil Yönlendiren

default.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var r1 = Request.UrlReferrer; // null 
    var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null 
} 

SingleSignOn.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Redirect("/"); 
} 

i URL'de "/SingleSignOn.aspx" yazarsanız, default.aspx yönlendirir, ancak yönlendiren boş.

Burada nelerin eksik? , Kullanıcıyı imzalar, bunu tahmin,

window.location.replace('~/SingleSignOn.aspx'); 

hangisi:

Ne, herhangi bir sayfada (bu basitleştirilmiş bir örnektir) yapmaya çalışıyor im i aşağıdakileri yapmak için bazı JavaScript olacak ve ana sayfaya yönlendirir.

Ancak, oradan geldiğimizde, SingleSignOn.aspx sayfasına yönlendirme yapmamak için bu JavaScript'e mantık oluşturmamız gerekiyor.

Yönlendiren, yalnızca gerçek bağlantı kullanıcı tıklamaları tarafından dolduruluyor mu?

Bunu nasıl yapabilirim? Bunu, URL'de görmek istemediğimden QueryString'i kullanmak istemiyorum.

Düşünebildiğim diğer tek seçenek Oturum'dur.

Lütfen

Yardım edin. = (

+0

Neden yönlendirme yaptığınızı merak ettiğiniz için merak ediyorsunuz. java-script: Eğer betimlendiyseniz, sunucu tarafında (muhtemelen temel sayfanın OnInit'i) kontrol edecektim. Bunu yapan sayfa. – VinayC

+0

@VinayC - karmaşık.Temelde bir Facebook Connect uygulamasında çalışıyorum - sayfa yüklendikten sonra, javascript onları imzalayabildiğimi bilmeme izin veriyor, dolayısıyla yönlendiriyorum. İstemci tarafı API'leri çalıştırılana kadar bunları imzalayabilir miyim bilmiyorum. – RPM1984

+0

Kullanıcı tanımlama yapıldıktan sonra kendi tanımlama bilginizi ekleyebilir ve daha sonra javacript'i kullanarak, çerezin var olup olmadığını veya yönlendirilip yönlendirilmeyeceğine karar verebilirsiniz. Çerez kullanmak istemiyorsanız, sayfalarınız (ana sayfada yapılmalıdır) kullanıcının kimliği doğrulanmışsa bir JS değişkeni belirlemelidir. Çerez yaklaşımı arasındaki fark, çerezin sadece bir kez (SingleSignOn.aspx'te) ayarlanması gerektiğidir, js değişkeni her sayfada ayarlanmalıdır (dolayısıyla mantık ortak bir temel sayfaya yerleştirilmelidir). – VinayC

cevap

9

Yani, benim cevap bulmak için bazı Google'ing yaptık yığın taşması için

Hayır teşekkürler -. Şaka, =)

Yani URL Yönlendiren sadece gerçek bir istemci tarafından doldurulur -click (bağlantı etiketi, düğme).

URL'ye elle eklediğinizde değil (JavaScript'imin yaptığı şey).

Yapmak zorunda olduğum çözüm, SingleSignOn.aspx sayfasında bir çerez oluşturmak ve yeniden yönlendirmeden önce bu çerezi JavaScript'ten okumaktır.

Sadece ihtiyacım olan şey, daha çok çerez. = (

birisi burada daha iyi bir fikir olmadığı sürece, bu kötü hatta http/yerine mutlak url kullanarak Sadece önsezi

+1

Çok teşekkürler, çok benzer bir çözüme ihtiyacım vardı çünkü bir yönlendirici sihirbazını değiştiriyordum çünkü yönlendiriciyi doğrulayamadıkları için adımları atlayabilirdiniz. UrlReferrer'ı da denedim ve geliştirmede çalıştı ve IIS'ye dağıtıldığında başarısız oldu. Bir çerez çözümü mükemmeldi! –

0

ile devam ama dene olmak ne:.. // bölümünü

Bu, UrlReferrer'ın istemci tarafında kaldırılabileceğinden (eklentilerle, bazı tarayıcı yapılandırmalarıyla bile emin olmadığından) oraya varmamasına güvenmemelisiniz.

+0

Bunu denedim, yukarıdaki cevabımı gör - sadece bir istemci tıklaması (düğme, çapa) yönlendirenin http başlığının doldurulmasına neden olur. – RPM1984

+0

@ RPM1984 k, ancak Yönlendirme ("/") tam olarak belirttiğim gibi değil, Redirect ("http://myserver.com/") gibi olurdu. – eglasius

+0

Evet, bunu yeni bir web projesinde denedim (yani başka hiçbir faktör yok - yani URL yeniden yazma işlemi bu şekilde gerçekleşir). Gitme. Her neyse, çerez çözümü çalışıyor ve istemci sayfasından önceki sayfayı "kontrol etmem gerekiyor" gerçeği, bunun bir çerez olmasını kolaylaştırıyor. Yardımın için teşekkürler tho. – RPM1984

İlgili konular