问题1
我熟悉角色管理,特定角色中的特定成员可以执行此操作并在功能上进行访问。我需要做的是管理个人用户,而不是他所处的角色。
例如,假设我创建了一个名为“Sales”的角色。我设置了销售人员可以做的角色权限。现在我想对个别用户进行检查。例如,如果这是“john”,我想向他展示他创建的记录。如果他是彼得,我只想告诉他他创造的记录,而不是约翰或其他销售人员。
我们可以使用ASP.NET中的“用户管理”吗?如果不是,我们必须自己创建它,我相信与ASP.NET“角色管理”的集成将不会那么顺利。
<小时/> 问题2。
我正在使用控件进行用户登录。我想在此时创建一个会话,以便我可以跟踪哪个用户已登录,这样我就可以向他显示仅与他有关的记录。我怎么能这样做?
答案 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功能有点不熟悉,因为它们实际上已经很好地完成了你所描述的内容。我建议看看这个教程系列: