【问题标题】:"Role Management" vs "User Management" in ASP.NETASP.NET 中的“角色管理”与“用户管理”
【发布时间】:2011-06-17 15:03:56
【问题描述】:

问题 1

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

例如,假设我创建了一个名为“销售”的角色。我设置了销售人员可以做什么的角色权限。现在我想检查个人用户。例如,如果这是“john”,我想向他展示只有他创建的记录。如果他是 peter,我只想向他展示他创建的记录,而不是由 john 或其他销售人员创建的记录。

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


第 2 个问题。

我正在使用控件进行用户登录。我想在这个时候创建​​一个会话,这样我就可以跟踪哪个用户登录了,这样我就可以向他展示只与他有关的记录。我该怎么做?

【问题讨论】:

  • @Buller,这可能对我有用。我在最初的问题中可能错过的是每个用户都有一个 ID(这在 asp.net 提供的成员角色之外)。我必须将此 ID 连接到 ASP.NET 用户。问题是,用户是基于 ASP.NET 的,但对个别用户的某些权限在 ASP.NET 之外,我必须使用此 ID 连接两者。每条记录都具有指向哪个用户创建它的 ID。但是这个 ID 还没有连接到任何用户,因为我只能访问登录的用户名并且他没有维护一个 ID。我必须将两者联系起来。

标签: asp.net roles user-management


【解决方案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

【讨论】:

  • 我的问题是如何将此 id 与知道用户是基于 ASP.NET 的用户联系起来,而此 id 不在 asp.net 角色之外。我有一个表格形式的链接,这个用户->这个ID。
  • 正是——当您授权用户时,您需要从他的数据库中获取用户的 ID,然后将该值存储在您的审计数据中。
  • @Dave 回应您的评论,听起来您是说正在从另一个使用不同用户数据库的应用程序输入记录。对吗?
  • 记录在同一个应用程序中。用户仅由管理员创建。他们不能自己更改密码。
【解决方案2】:

ASP.NET Profile Properties

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

【讨论】:

  • 这里引用的文章很切题+1
  • 正在研究。看起来这正是我所需要的。
  • @Dave:那么当它“看起来这正是我需要的”时,你为什么不接受这个答案?
  • 我接受了下面的答案,它解决了我的问题。很高兴知道我也可以使用配置文件属性。谢谢你的回答。
【解决方案3】:

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

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

听起来您对 ASP.NET 成员资格和角色功能有些陌生,因为它们实际上设置得很好,可以完成您所描述的内容。我建议您查看本教程系列:

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

【讨论】:

  • 我真的很喜欢大卫的回答(配置文件解决方案),但这个看起来更容易实现。现在我正在使用单独的 IDS,它们不是在 aspnet 表中创建的 id。但也许我可以找到匹配并使用它们。如果我想使用配置文件解决方案,我需要能够在注册时插入 user_id 字段(管理员会这样做,而不是用户),我现在正在研究。是的,我是具有 PHP 背景的 ASP.NET 新手。非常感谢
  • 在 asp.net 用户中添加配置文件属性可能是关联来自不同用户数据库的两个用户的最内置方法。然而,由于配置文件属性被“打包”到 SQL DB 的一个字段中,因此访问它可能有点笨拙。在某些情况下,最好使用单独的用户映射表,该表将 aspnet_Users 表作为外键引用。
【解决方案4】:

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

【讨论】:

  • 这个问题如何让您认为自定义会员提供者是必要的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
相关资源
最近更新 更多