2017-01-05 51 views
0

ASP.NET C#如何訪問安全性添加到asp.net C#

我有一個問題引起事件的功能,我怎樣才能使一個訪問控制由鈕提供的請求,停止該函數的執行,我需要一些可以配置的泛型,並說角色或配置文件可以訪問某些功能請求由按鈕執行。

我不希望這樣的事情

protected void DownloadFile_ServerClick(object sender, EventArgs e) 
{ 
    if (RoleAdmin) 
     { 
     // do something 
     } 
} 

我需要的東西,在執行方法時在PAG的要求,即直接驗證,看是否該配置文件存儲在底座上的匹配方法,所以我爲所有pag做了準備,並且不必在每個執行的方法中都付諸實施。

我需要名稱fucntion是請求。

public class PageBase : Page 
{ 

protected override void OnLoad(EventArgs e) 
    { 


     ***How to capture the function name of request ???*** 

     if (User.Identity.IsAuthenticated == false) { Response.Redirect("~/Account/login.aspx?ReturnUrl=/admin"); }; 
     if (!(User.IsInRole("admin") || User.IsInRole("super user"))) { Response.Redirect("/"); }; 

    } 
} 

回答

0
這個

可能:

public class StaticObjects 
{ 
    public static string UserRole 
    { 
     get 
     { 
      try 
      { 
       return (string)HttpContext.Current.Session["UserRole"]; 
      } 
      catch (Exception) 
      { 
       return ""; 
      } 
     } 
     set 
     { 
      HttpContext.Current.Session["UserRole"]=value; 
     } 
    } 

    public static bool AuthorizeExecution(EventHandler method) 
    { 
     bool autorized = YourDataBaseQuery(UserRole, method.Method.Name); 
     return autorized; 
    } 
} 
    ////////////////////////////// ANOTHER FILE ///////////////// 
    public static void DownloadFile_ServerClick(object sender, EventArgs e) 
    { 
     //You send the method itself because it fits the delegate "EventHandler" 
     if(!StaticObjects.AuthorizeExecution(DownloadFile_ServerClick)) 
      return; 
    } 
+0

是的,但你需要把如果你需要做到這一點的所有功能(StaticObjects.AuthorizeExecution(DownloadFile_ServerClick)!)。 –

+0

我正在尋找並在PageBase中找到函數「protected override void OnLoad(EventArgs e)」,只要執行請求就會調用它。我需要知道如何捕獲在請求中執行的函數的名稱,以便在此處執行控制。 這將防止您必須將控制代碼放置在事件函數中 –

+0

如果您的按鈕具有強大的命名約定,則此類事件應起作用http://stackoverflow.com/questions/3175513/on-postback-how-可以,我檢查,其控制的原因,回傳功能於頁面初始化事件 – Seano666

相關問題