【问题标题】:how to manage more than one site admin and users in database?如何在数据库中管理多个站点管理员和用户?
【发布时间】:2009-08-06 12:43:07
【问题描述】:

我必须为拥有数百万用户的应用程序设计一个数据库。现在该网站将拥有多个管理员,例如 HRadmin、SuperAdmin、SalesAdmin。我只能担任一个管理员角色。

我担心的是,如果我在一个表中处理所有用户相关数据,这意味着所有用户,无论是管理员还是用户,凭据都将存储在一个表中,对于唯一用户名和其他内容的搜索可能会非常慢。

人们建议,管理员和用户有不同的页面,在查询字符串中添加一个关键字并将其提取到代码中以找到实际的管理员角色。

我应该如何在数据库中实现这个东西,这样前端才不会变得笨重。我使用的是 asp.net2.0 和 sql server 2005。

【问题讨论】:

    标签: asp.net sql-server database-design


    【解决方案1】:

    由于您使用的是 ASP.NET 和 SQL Server 2005,请查看使用 ASP.NET Membership。有一个工具可以为您构建数据库表,包括对多个用户、角色和配置文件字段的支持。

    以下是对 ASP.NET 成员资格的广泛了解:http://www.4guysfromrolla.com/articles/120705-1.aspx

    【讨论】:

    • 我看了看,但它不符合我的要求。它非常严格,我们没有时间编写自己的会员提供程序。
    • 您不需要创建提供程序。该工具会为您构建数据库、存储过程和视图,您可以随意使用它。这是一个很棒的工具,因为它可以完成构建用户管理系统的所有工作。
    • ASP.NET SQL Server 注册工具 (Aspnet_regsql.exe) 将创建 SQL Membership Provider 所需的数据库。 msdn.microsoft.com/en-us/library/ms229862%28VS.80%29.aspx
    【解决方案2】:

    我同意,使用 ASP.NET 成员资格提供程序。您应该只需要在用户登录时进行一次查找 - 然后您可以使用 forms authentication 创建一个包含身份验证和角色详细信息的安全 cookie。只要您有一个索引良好的表,即使您有数百万行,单次查找也应该很快。

    【讨论】:

      【解决方案3】:

      如果您将获得 ASP.NET 会员资格 - 另请阅读 Performance Considerations for Applications Using Services

      拥有数百万用户需要一些优化,例如我们使用文章中描述的 CacheRolesInCookie

      【讨论】:

        【解决方案4】:

        相信我,您只需要 1 个用户表,尤其是在您要检查唯一用户名的情况下。正确的索引应该使它正常工作。您可能还需要一个相关表来定义每个人的角色(他们可能有多个角色。)

        【讨论】:

          【解决方案5】:

          将关键字放在查询字符串中是一个非常非常的坏主意。如果我知道使用什么关键字成为管理员,我可以伪造自己的管理员权限吗?如果用户已登录,您可以将他的凭据放在会话或 cookie 中(我更喜欢会话,因为 cookie 可以在客户端更改),这可能会为您节省大量数据库请求(我不知道任何系统不断更新您的凭据,据我所知,当您在 Active Directory 上时,甚至 Windows 也会缓存它们)。

          如果您担心在表中查找用户名会花费很长时间,您应该优化您的数据库表。将索引放在用户名上(或将其用作主键),您在搜索用户名时不会遇到性能问题(此外,在用户名上执行多次搜索时,SQL 服务器会尝试自行优化)。

          另外使用不同的页面似乎可以加快速度,但是当您需要对代码进行更改时,您就会遇到一个大问题,因为您必须在多个地方修复相同的东西。有时,可重用性和可维护性应该超越速度!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多