ASP.NET中的“角色管理”与“用户管理”

时间:2011-06-17 15:03:56

标签: asp.net roles user-management

问题1

我熟悉角色管理,特定角色中的特定成员可以执行此操作并在功能上进行访问。我需要做的是管理个人用户,而不是他所处的角色。

例如,假设我创建了一个名为“Sales”的角色。我设置了销售人员可以做的角色权限。现在我想对个别用户进行检查。例如,如果这是“john”,我想向他展示他创建的记录。如果他是彼得,我只想告诉他他创造的记录,而不是约翰或其他销售人员。

我们可以使用ASP.NET中的“用户管理”吗?如果不是,我们必须自己创建它,我相信与ASP.NET“角色管理”的集成将不会那么顺利。

<小时/> 问题2。

我正在使用控件进行用户登录。我想在此时创建一​​个会话,以便我可以跟踪哪个用户已登录,这样我就可以向他显示仅与他有关的记录。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

此时您的Q1并非真正关于角色与用户管理(即:授权)。它是关于您的应用程序中的审计跟踪。

您这样做的方法是捕获使用记录创建相关记录的用户的ID,以便稍后您可以对该ID进行过滤。

伪数据库结构

Table Sales
    Field...
    Field...
    Field...
    CreatedByUser int not null, -- Populate this on creation and never change it again
    ModifiedByUser int not null - populate this on every row update including insert

答案 1 :(得分:1)

请参阅ASP.NET Profile Properties

假设数据库中的记录对应于用户的唯一ID,您可以将唯一ID存储在每个用户的配置文件属性中。

答案 2 :(得分:0)

您正在谈论身份验证和授权。对于问题1,您需要实现自定义授权提供程序以允许用户级别控制http://msdn.microsoft.com/en-us/library/aa479048.aspx对于问题2,一旦您登录并进行了身份验证,该会话将包含一个自动包含信息的userprinciple对象。

答案 3 :(得分:0)

1)如果要通过创建用户过滤记录,则需要在表中记录创建记录的用户的ID。您可以通过User.Identity.Name访问当前用户的姓名,并通过User.ProviderUserKey访问他们的ID(提供商相关)。

2)会话在ASP.NET中自动创建,如果您有正确配置的MembershipProvider,您可以使用User对象检索所有需要的用户信息,如上所示。

听起来你对ASP.NET Membership和Roles功能有点不熟悉,因为它们实际上已经很好地完成了你所描述的内容。我建议看看这个教程系列:

http://www.4guysfromrolla.com/articles/120705-1.aspx