http modülü doğru sayfa url'sini alamıyor

Merhaba, sormak için çok noob bir soru var. Erişim hakkı için http modülü kullanıyorum. Kullanıcı 'admin' diyelim ki sayfayı görmeye yetkili oldu. Http modülü, sayfa url'sine dayanarak veri tabanından erişimi alacak, bundan sonra http modülü, kullanıcının erişmesine izin verilip verilmeyeceğini belirleyecektir.

İşte örnek kodum:

 public void Init(HttpApplication context)
    {
        context.AcquireRequestState += new EventHandler(context_AcquireRequestState1);

    }



    void context_AcquireRequestState1(object sender, EventArgs e)
    {
        try
        {

           string requestUrl = application.Request.AppRelativeCurrentExecutionFilePath.ToString().Trim();
            //return last string of .aspx
         string   requestAspx = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1).Trim();

    }

ama httpmodule birkaç kez çalışacak. URL'yi doğru şekilde alamıyor. Örneğin ilk kez ~/Module/Admin/Role/RoleManagementList.aspx alabilirsiniz. sonra ikinci kez yanlış url ~/favicon.ico.Can alacaktır herkes bu sorunu çözmeme yardımcı olur? çok teşekkür ederim

0

1 cevap

"Yanlış" URL'yi almıyorsunuz. Kullanıcının tarayıcısı sadece farklı bir kaynak için farklı bir istekte bulunuyor. Http modülü, her bir http isteği için çalıştırılacak. Bu, favicons (tarayıcı URL'lerinde görüntülenen ve bazen sizden bile istemediyseniz bile) gibi "kaynak" sayfalarına ek olarak her kaynak için bir tane veya harici bir resim anlamına gelir. Sayfada başvurulan .css, external .js dosyaları, vs. (ASP.NET yığınını atlayarak doğrudan IIS tarafından sunulmadıkça). Bu URL'lerin tümünü modülünüzde dikkate almanız gerekecektir.

Depending on how tightly you control your deployment environment,you may also/instead be able to exempt certain file extensions from every hitting asp.net by having IIS simply serve them directly. See http://msdn.microsoft.com/en-us/library/ms972953.aspx

0
katma
Merhaba, yorumunuz için teşekkürler. Sonra doğru http url almak için herhangi bir çözüm var mı? Mesela ~/Modül/Yönetici/Rol/RoleManagementList.aspx.Or mayb gibi url almak istiyorsanız http modülü? preInt veya diğer gibi başka bir adım yapabilirsiniz?
katma yazar user998405, kaynak
Tamam . çok teşekkür ederim
katma yazar user998405, kaynak
Merhaba Nathan. yardımın için teşekkürler . Ancak hala sormak için bir sorum var. Düğmeyi görünür kılmak için http modülünü kullanabilir miyim? Erişimi veritabanından doğru olarak aldığımı varsayalım. Daha sonra silmeye izin verilmiyor.Kullanılan sayfadaki tüm Sil düğmeleri false olarak ayarlanmış. Bunu yapmak için mümkün mü? FindControl yöntemini kullanarak Mayb
katma yazar user998405, kaynak
Yanlış şekilde düşünüyorsun. İsteğin URL'si verilecek - farklı bir URL'yi "alamıyorsunuz". Verdiğiniz URL'ye nasıl tepki vermek istediğinize karar vermek zorundasınız. Dolayısıyla, gereksinimlerinize bağlı olarak, örneğin, .aspx ile bitmeyen tüm URL'leri ileteceğinize karar verebilirsiniz. Ya da ".ico" ya da her neyse biten URL'leri geçmeye karar verebilirsiniz. Onlara nasıl tepki vermek istediğinize yalnızca siz karar verebilirsiniz.
katma yazar Nathan, kaynak
Kolayca veya güvenilir değil. Tek tek düğmeleri devre dışı bırakmak istiyorsanız, farklı bir yaklaşım kullanarak daha iyi durumda olacaksınız. Üyelik API'sini kullanmayı düşünebilirsiniz ( msdn.microsoft.com/en-us/ düğmeleri devre dışı bırakmak için gerçek sayfa kodunda HttpContext.Current.User.IsInRole (...) ile birlikte kitaplık/ff648345.aspx ). Genel olarak, role dayalı güvenliği gerçekten uygulamak için, silme eylemini gerçekleştiren gerçek kodun etrafındaki güvenlik kontrollerini yapmalısınız. Sadece düğmelerin devre dışı bırakılması (kullanıcı dostu UI için iyi iken) izinsiz olarak bile silinmeye izin vermek için saldırıya uğramış olabilir.
katma yazar Nathan, kaynak