2011-08-10 7 views
7

Mam utworzoną aplikację i zaimplementowałem rejestrowanie ELMAH. W mojej witrynie są trzy rodzaje użytkowników. Jak zapewnić dostęp tylko do ELMAH.axd do logowania administratora w Internecie

  • Admin: można wszystkiego (prawa do wyświetlenia elamh.axd)
  • użytkownika: może mieć własne prawa (nie można zobaczyć elamh.axd)
  • gości: tylko widok (nie można zobacz elamh.axd)
  • Powyższy użytkownik zostanie zapisany w bazie danych.

    probelm: - Teraz jak mogłem zarządzać poziom ochrony użytkownika i gościa, aby zobaczyć ELMAH.axd plik dziennika?

    Odpowiedz

    10

    Jeśli używasz Roles można dodać to do pliku web.config:

    <location path="~/elmah.axd"> 
        <system.web> 
         <authorization> 
          <allow roles="Admin" /> 
          <deny users="*" /> 
         </authorization> 
        </system.web> 
    </location> 
    

    Jeśli nie używasz ról trzeba będzie podać każdemu użytkownikowi, który chcesz dać dostęp do:

    <location path="~/elmah.axd"> 
        <system.web> 
         <authorization> 
          <allow users="user1, user2, user3" /> 
          <deny users="*" /> 
         </authorization> 
        </system.web> 
    </location> 
    

    Aktualizacja:

    Ponieważ nie używasz żadnego z wbudowanego uwierzytelniania/autoryzacji, a ty nie ha Kontroluj stronę elmah, którą będziesz obsługiwać zdarzenie BeginRequest():

    protected void Application_BeginRequest() 
    { 
        if(Request.Url.AbsolutePath.ToLowerInvariant().Contains("elmah.axd")) 
        { 
         // Check if user can see elmah and handle unauthorised users (return 401/redirect to login page/etc...) 
        } 
    } 
    
    +0

    Dziękuję za odpowiedź. ** Obsługuję użytkownika z Sesjami **, więc jak to będzie działać z przestrzenią nazw ** System.Web.Mvc i HttpSessionStateBase ** – imdadhusen

    +0

    Czy używasz członkostwa asp.net? –

    +0

    Nie używam ** Session ["UserName"] = "Admin; ** w Asp.Net MVC 3.0 – imdadhusen