2017-01-05 11 views
0

ASP.NET C#の私は疑問を持っている#

cはasp.netでのイベントによって引き起こされる機能へのアクセスのセキュリティを追加する方法を、どのように私は停止し、ボタンが提供する要求にアクセス制御を行うことができます機能の実行、私はそれが構成することができ、役割やプロファイルがボタンによって実行される特定の機能要求にアクセスすることができる一般的なものが必要です。

私はそのプロファイルがベースに保存されている方法と一致するかどうかを確認するために、メソッドが実行されたときに直接PAGの要求に検証し、何かを必要とする

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

ような何かをしたくない

ので、私はすべてのページのために行うと、実行されたメソッドのそれぞれの難しいことにそれを置く必要はありません。

私は要求である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- can-i-check-which-control-cause-post-in-page-init-event – Seano666

関連する問題