31

Bir Yetkilendirme filtresi özniteliği yazıyorum Geçerli diziyi bir dize olarak nasıl alacağımı bulmakta sorun yaşıyorum, böylece LogOn eylemine bir parametre olarak iletebiliyorum. Amaç, bir kullanıcı başarıyla oturum açtığında, erişmeye çalıştıkları sayfaya yönlendirilir.Geçerli URL'yi bir FilterAttribute içinden nasıl alabilirim?

public override void OnAuthorization(AuthorizeContext filterContext) 
{ 
    base.OnAuthorization(filterContext); 

    ... my auth code ... 
    bool isAuth ; 
    ... my auth code ... 

    if(!isAuth) 
    { 
     filterContext.Result = new RedirectToRouteResult(
      new RouteValueDictionary { 
       { "Area", "" }, 
       { "Controller", "Account" }, 
       { "Action", "LogOn" }, 
       { "RedirectUrl", "/Url/String/For/Currnt/Request" } // how do I get this? 
      } 
     ); 
    } 
} 

Geçerli diziden tam dize Url'yi nasıl alabilirim?

cevap

59

Dene:

var url = filterContext.HttpContext.Request.Url; 
+6

Ayrıca RawUrl (filterContext.HttpContext.Request.RawUrl) etki alanı –

15

almak için @rboarman ama önerdiği gibi deneyebileceğiniz eksiksiz URL genellikle RedirectUrlgöreli url olacak ve bunun için bir RawUrl özelliğini denemek zorunda Request nesnesi.

filterContext.HttpContext.Request.Url ===> http://somesite.com/admin/manage 

filterContext.HttpContext.Request.RawUrl ====> /admin/manage 

EDITED: Ben UrlReferrer URL'ye sonra oldu benim özel durumda ikinci örnek

+0

olmadan URL almak için kullanabilirsiniz İkinci örnekte kullanılacak "RawUrl" için mi demek istediniz? –

+0

-1 'Url' değerinin gözlenmesi, onu göreceli olarak mutlak hale getirmez. –

+0

@JoshNoe Evet İkinci örnekte RawUrl demek istedim. Bugünlerde SO'dan biraz uzaktayım ve yorumunuzu görmeyi özlemiştim. – VJAI

4

düzeltildi.

filterContext.HttpContext.Request.UrlReferrer 

Bu seferki beni geri o erişim izni olmayan bir eylemi erişmeyi denemeden önce oldu sayfaya yönlendirmek edelim.

İlgili konular