簡體   English   中英

在C#ASP.NET中的授權

[英]Authorization in c# asp.net

在我的公司中,我們正在開發一個包含許多用戶的Web應用程序,所有這些用戶都將定義一個或多個角色,為此角色,我們有單獨的設置頁面,例如

要進一步說明,請參見下圖

如果該角色登錄后是否能夠看到此菜單,則選中左側的“訪問”復選框,因為您可以看到右側的菜單,當您展開菜單節點時,它將顯示該菜單下的子菜單,我們可以進行設置如果他可以執行“添加,刪除,編輯,查看以及從菜單隱藏子菜單”的權限

並且我們編寫了一個通用類,該類使用此表檢查用戶角色並給出結果,在每頁加載頁面時,我們將調用該類並根據結果應用設置。

例如:如果用戶登錄到母版頁,我們會在頁面加載時得到結果,並應用這樣的設置,

  btnAdd.Enabled = result[0];
  btnEdit.Enabled = result[1];

其中result[0]result[1]是該類的返回值。

現在我的問題是,這是在asp.net中進行授權的正常方式嗎?(不僅針對頁面,而且針對頁面中的控件)

我感覺像在做像btn.Enabled = true這樣的草率編碼。

既然我已經說完了最后的需求,那么你們都將做什么呢?

問題:

1.如果我以這種方式進行授權會有什么弊端?

2.在asp.net中進行授權以滿足我的需要的正確方法是什么(如上所述,我需要啟用,禁用控件)

謝謝...

這是非常基本的方法,這樣做無害。 在我公司的一個模塊中,我們有相同的要求,但我們以不同的方式來完成。 我們是動態生成的。

您應該考慮使用框架的功能。 .NET為您提供基於聲明的授權。 您還可以查看其他授權框架,例如XACML(可擴展訪問控制標記語言)。

XACML的好處是:

  • 它是標准化的
  • 它是可擴展的
  • 它的政策語言非常靈活。 這意味着它將滿足您尚未想到的authZ方案。

我在這里寫了一個有關相關主題的較長答案。 看一看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM