2

在 ASP.NET 项目 (C#) 和 SQL Server 2008 中,应该如何确定管理员?

我应该在我的用户表中有一个属性来确定管理员吗?即使我只有 1 个管理员?

id           username            type
--------------------------------------
1            Ali1                admin
2            James3              user
3            Carlos31            user
4            Kuku                user

或者

检查Session时,Admin 是否应该由一个特殊的ID来确定?

假设管理员是id=1的用户

if(Session["id"].toString().Equals("1"))
{
    //Admin
}
else
{
    //Normal User
}

哪种方法更好、更安全?有更好的吗?

4

2 回答 2

3

我不会检查特定的 ID,而是检查用户类型。您不知道数据是否会改变,或者您是否必须添加额外的管理员。在您的应用程序中硬编码这样的值通常是一个坏主意。相反,创建一个 UserType 类并检查 UserType.Admin 或 UserType.User 角色并处理 BLL 和/或 DAL 中的代码。

因此,要回答您的问题,您的第一个实施会很好。

祝你好运。

于 2013-01-16T15:11:48.123 回答
1

我建议创建一个类似的模式:

http://dbpatterns.com/documents/50851b3189cbad4b9fd5b45a/

所以你有一个用户表和一个级别表。

在级别表中有类似的内容:

id           level
-------------------
1            admin
2            user

然后在用户表中给每个用户一个级别编号,这样您就可以轻松添加级别并有一个定义来查找。

或者,如果您想矫枉过正:

有一个存储用户 ID 和级别 ID 的第三张表,以便用户可以拥有多个角色

在 user_level_link 表中有类似的内容:

user_id    level
-------------------
1            1
2            1
2            2

绝对不要针对单个 ID 执行此操作,因为当您打算进一步扩展站点时,它可能会导致问题。

于 2013-01-16T15:16:48.183 回答