![](/img/trans.png)
[英]ASP.NET MVC 5: App Pool, Windows Authentication and Active Directory
[英]asp.net c# web app with active directory and windows authentication
我目前正在開發具有一個主頁和幾個部門頁面的Intranet Web應用程序,該Web應用程序僅用於查看信息,因此每個人都具有相同的特權。 我已經到達一個點,我必須擔心該應用程序的訪問和身份驗證,我的公司有一個活動目錄,其中包含多個可以使用的組,在搜索了一會后,我遇到以下問題:
對於所有問題我都很抱歉,但是我對C#和.net開發還是比較陌生
以下是您最新問題的答案:
-在webconfig中,我可以指定有權訪問每個部門頁面和主頁的組嗎? 有點像下面的代碼,如果這樣,我需要在分配哪些組有權訪問哪個頁面之前放置我的ldap連接字符串,對嗎?
[上]在不使用web.config中的角色的情況下,最好進行身份驗證,因為這也需要定義角色。 我們在這里談論的是AD組,用戶將是其中的一部分。 因此,在Page_Load()
,只需調用身份驗證方法,可能傳遞用戶名和AD組作為參數來訪問頁面。 如果要使解決方案可配置,則將特定頁面的允許的AD組存儲為web.config中的“鍵”,然后在代碼中讀取它們。 將組和用戶名一起傳遞給您的身份驗證方法。
-當用戶打開網站時,將提示他插入Windows憑據,這是自動的,對嗎? 然后他將能夠看到主頁,然后轉到他的部門頁面,對嗎?
[Dipra]是的,這是自動的。 不需要單獨的代碼。 只要驗證了身份,他就可以轉到他想要的任何頁面。
-如果我正確理解,那么在每個page_load事件中,我都需要使用用戶名進行搜索並檢查他屬於哪個組,對嗎?
[Dipra]是的,您需要在每個Page_Load()
方法中進行檢查。 作為一種方法,您可以嘗試獲取用戶所屬的所有組,然后檢查該頁面允許的AD組是否為這些組之一。 如果是,則可以對用戶進行身份驗證。
-i以上是正確的,現在我要解釋頁面的導航,因為我認為弄亂page_load可能會給我帶來一些問題,將檢查每次頁面加載時用戶屬於哪個組? 這會使應用程序變慢嗎?
[Dipra]每個服務器端控件(例如asp按鈕)都將導致回發。 為確保Page_Load()
中的身份驗證代碼不會在頁面上每次發生回發時都運行,請將該位包含在if(!Page.IsPostBack) {}
。 這意味着該頁面中的任何代碼都將在頁面未“回發”(即首次渲染)時運行。 此頁面上來自服務器端控件的所有后續回發將忽略此塊中的代碼。
-最后,要檢查每個用戶的成員身份,我需要與Dipra發布的鏈接粘貼在下面但在c#中的第二個答案類似的代碼,對嗎?
[Dipra]您可以參考上面帖子中的已接受答案,可能需要自己進行一些調整。 它已經在C#中。
key
,則可以存儲相應AD組的名稱,該AD組被允許在value
字段中訪問“營銷”頁面。 是的,一旦將其用於一頁,其他頁面將變得更容易。 try...catch
塊中。 如果在對AD進行身份驗證時遇到問題(例如,連接問題),則您的代碼將引發異常。 捕獲(並理想情況下記錄)異常並將用戶重定向到錯誤頁面,這可能表示存在阻止身份驗證的某些問題。 在這種情況下,您不應授予用戶訪問權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.