Kimlik doğrulaması yapmadıysa kişileri bir giriş ekranına yönlendirmek için bir asp.net mvc sayfasındaki işlemlerimin bazılarında kimlik doğrulama özelliği kullanıyorum. Sorunum onları giriş yaptıktan sonra yönlendiren sayfaya döndürüyor. Sadece yönlendiren eylemi ve yönlendiren denetleyiciyi takip ediyordum, ancak bazı parametrelerin kaydını tutmam gerektiğinde sorunlu hale geliyor. Bilmediğim hile içinde bazı şıklar var mı?Yönlendirmeli sayfaya geri dön
cevap
Eğer ASP.NET oturum açma sayfasına bir kullanıcıyı yönlendirir FormsAuthentication, kullandığınız var dediği gibi
var urlReferrer = Request.UrlReferrer;
if (urlReferrer != null)
{
var url = "~" + Server.UrlDecode(urlReferrer.PathAndQuery);
// get routecollection
var routeCollection = new RouteCollection();
GlobalApplication.RegisterRoutes(routeCollection);
// mcok context
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context.Expect(ctx => ctx.Request).Returns(request.Object);
// mock request
// TODO: convert querystring to namevaluecollection
// now it's just stripped
if (url.IndexOf('?') > 0)
{
url = url.Substring(0, url.IndexOf('?'));
}
var mock = Mock.Get(context.Object.Request);
// TODO: insert namevaluecollection of querystring
mock.Expect(req => req.QueryString).Returns(new NameValueCollection());
mock.Expect(req => req.AppRelativeCurrentExecutionFilePath).Returns(url);
mock.Expect(req => req.PathInfo).Returns(string.Empty);
// get routedata with mocked context
var routeData = routeCollection.GetRouteData(context.Object);
var values = routeData.Values;
return RedirectToAction(routeData.Values["action"].ToString(), values);
}
URL şuna benzer:
FormsAuthentication, mesela onu alıp yönlendirmek böylecehttp://www.mysite.com/Login?ReturnUrl=/Something
giriş formun işlem özniteliği (gibi gizli giriş veya Url bir parçası olarak ya) aynı ReturnUrl parametresi olmalıdır
<form action="Login?ReturnUrl=<%=Html.AttributeEncode(Request.QueryString["ReturnUrl"]) %>"></form>
veya
<form><input type="hidden" name="ReturnUrl" id="ReturnUrl" value="<%=Html.AttributeEncode(Request.QueryString["ReturnUrl"])"%> /></form>
Bu sonuca ulaşmak için yaptığım şey aşırıya kaçmak olabilir ve diğer bazı yöntemleri de görmek isterim. Ancak, işte benim kodum.
Lütfen bir içerikle alay etmek için Moq kullanacağını unutmayın ... Ve daha önce querystring ile hiçbir şey yapmadım (yollarımda herhangi bir querystrings yok). Ben, belki biraz fazla karmaşık :) durumda
Hep atıfta URL'ler kendi etki ve nereden geliyor olabilir dair akla yatkın dize içinde olmasını sağlamalıdır. Aksi taktirde, flaş veya diğer istemci taraf teknolojileriyle, bilinen ve bilinmeyen, yanıt bölme veya diğer saldırılar gibi şeyler yapmak için kullanılma potansiyeline sahiptir.
HTTP yönlendiricisi, kullanıcı girdisidir ve başkaları gibi doğrulanmalıdır.
- 1. Web Sayfasında Önceki Sayfaya Dön
- 2. Kullanıcıyı giriş yaptıktan sonra önceki sayfaya geri dön (Rails)
- 3. Sayfayı göster Hata (array) php ile sayfaya geri dön
- 4. Selenyum webdriver'de Frame'den geçerli sayfaya geri gitme
- 5. Geri Dön ve javascript
- 6. Git Çalışmıyor Geri Dön
- 7. php sonuçları geri dön
- 8. Codeigniter Denetleyici bir önceki sayfaya dön
- 9. Kayıt ekledikten sonra PHP bir önceki sayfaya dön
- 10. Psycopg2 cursor.execute jeneratöre geri dön
- 11. Ekle kaldır Listeye geri dön
- 12. iThemes Security: Gizle Yönetici Giriş Alanı Ana Sayfaya Dön
- 13. Geri Dön düğmesinin uygulamamı kapatmasını engelle
- 14. Linux Sunucusu PHP güncelleştirmesi geri dön
- 15. Bir koleksiyon topla ve geri dön Sözlük
- 16. QR Barkod resmi metne geri dön
- 17. JavaScript - Anonymous fonksiyonundan geri dön (varScope)
- 18. Geri Yükleme özgün xml durumuna dön
- 19. Lat/lon'u piksellere dönüştür ve geri dön
- 20. Gezin Önceki görünüm denetleyicisine geri dön
- 21. Sayfasına geri dön sel_getUid() 'nin özgün davranışı
- 22. AVAudioPCMBuffer'ı NSData dosyasına dönüştür ve geri dön
- 23. UICollectionViewCell sayısı her zaman geri dön 0
- 24. JColorChooser daha önce seçilen renklere geri dön
- 25. Mutlak yol web-göreli yoluna geri dön
- 26. Firefox'u Yeniden Yükle Sayfasına Geri Dön Düğmesi
- 27. Liste Stili CSS geçersiz kılmaya geri dön
- 28. Diğer ağdaki Ethernet paketleri ve geri dön
- 29. Ayrı yönlendirmeli NIB'ler
- 30. C - ncurses uygulamasından harici programa geri dönme ve geri dön
Ek bir açıklama olarak, bazı routedata değerlerini değiştirmek için yukarıdaki kodu da kullanıyorum. – Casper