2009-10-15 86 views
0

我正在嘗試構建一個ASP.NET 3.5網站,該網站允許用戶登錄並瀏覽幾頁。我想限制某些用戶能夠查看某些頁面,但我無法提供自定義和靈活的系統。我已經看到MS的這個版本,但它不是我正在尋找的。任何人都可以指導我一些很好的在線文章甚至視頻教程,以便我可以做進一步的研究。謝謝!ASP.NET訪問控件

P.S.我已經嘗試創建一個從System.Web.UI.Page繼承的類,它執行一些檢查,但它變得混亂。我的所有其他頁面都從該公共頁面繼承。這是常見的做法嗎?你們過去如何解決這個問題?

+2

你能解釋一下MSFT版本如何不足以滿足您的需求?它會幫助我們理解你在找什麼。 – 2009-10-15 14:18:12

+0

我對ASP.NET仍然很陌生,所以我不確定會員,角色等類是否可以使用我所擁有的。我正在接管一個已經存在的用戶和角色表的項目,我需要創建一個管理員可以創建新角色並將其分配給特定用戶的系統。最後,我需要限制頁面內的某些元素(I.E.一個GridView的數據)給某些用戶。例如: '如果用戶==管理員 顯示帳號 否則 什麼也不顯示.' – 2009-10-15 17:01:48

回答

1

實現此目的的最佳方法是將表單身份驗證與自定義角色提供程序結合使用。

希望你知道,爲了使表單身份驗證正常工作,你不必使用MS用來進行身份驗證的完整數據庫設置。

您可以簡單地擁有自己的數據庫並自行驗證用戶,並設置cookie。

String UserName = "CoolGuy"; 
Boolean isValidUser = YourClass.YourMethod(UserName); 
if (isValidUser) 
{ FormsAuthentication.setAuthCookie(UserName, false); } 

這將驗證會話的用戶「CoolGuy」,只要YourMethod返回true。

您可以使用此功能與自定義角色提供程序結合使用。這使您可以檢查User.IsInRole(「Role」);在你的代碼中。

要與CustomRoleProvider開始..這裏是一個很好的參考... http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx

  • 拉賈
+0

謝謝Raja。您知道如何在成功登錄後將用戶轉發到默認頁面以外的頁面嗎?我一直在使用Response.Redirect,但我看到了FormsAuthentication.RedirectFromLoginPage方法。 例如,在用戶成功登錄Default.aspx頁面後,我想將它們轉發到Orders.aspx。 – 2009-10-15 15:39:10

+0

如果重定向頁面將會相同。方便的方法是使用Response.Redirect()....這必須在設置Forms Authentication Cookie之後。 – 2009-10-15 19:27:57

+0

包含用戶通常直接請求一個安全頁面(比如說asd.aspx)...由於頁面是安全的,它將重定向到登錄頁面...成功登錄後,如果你想讓用戶返回asd.aspx ...您需要使用FormsAuthentication.RedirectFromLoginPage()方法。 – 2009-10-15 19:30:46

1

那麼,在不知道應用程序的確切細節的情況下,您可以使用的一件事是內置於Membership API中的角色管理器。

基本上,您會爲每個頁面創建角色並將用戶分配給您希望他們查看的角色(頁面)。

在後面的代碼的每一頁,在ON_LOAD事件,我想簡單地調用該方法

if(Roles.IsUserInRole(rolePageName)) 
{ 
    //Continue page loading logic 
} 
{ 
    //Redirect or transfer the user elsewhere 
} 

對於這樣的邏輯,你可能想用一個繼承頁面重新考慮,否則你會必須想出一種方法來檢索頁面的URL並將其傳遞給if-else或switch語句的長列表以調用正確的Roles.IsUserInRole方法。