2009-03-02 34 views

回答

0

您可以只使用ASP.NET的Active Directory Memebrship &角色提供认证\授权用户到应用程序。然后,您可以拨打Roles.IsUserInRole来查看AD角色成员资格,以便在呈现内容之前检查用户是相关组的一部分。

2

我在很多应用程序中都做了这个。

为您的应用程序启用了Windows身份验证。

创建一些可以存储用户凭据的对象,并将该对象存储在会话中以便快速回复。如果不在那里,您可以快速重建它。我通常有每个角色设置为字节例如:


enum USER_ROLE : int 
{ 
    Role1 = 1, 
    Role2 = 2, 
    Role3 = 4, 
    Role4 = 8, 
    etc 
} 

if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1; 
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2; 
etc 

然后随时控制需要保证,我将它传递到接受一个HTMLLoader对象,并根据用户的角色属性和安全需求的功能该控制。

例如,布尔SetControlSecurity(HTMLControl时CTRL,INT iUserRoles,INT iControlRoles,ACTION反应的影响)

所以这样做面板的一个示例可能是:

SetControlSecurity(pnlUserInfo,YourUserObject.Roles,eRole.Role2,ACTION.Hide);

我平时也有它参加一个参数去的动作类型像是躲进安全对不履行,只读,清晰的数据,等等

相比在功能中的作用很简单:


bool bHasAccess = ((iUserRole & iControlRoles) > 0); 
if (bHasAcess) 
{ 
    // leave the control or make sure it is visible etc 
} 
else 
{ 
    // take action to secure the control based on the action 
} 

希望有帮助。