如何确定网站管理员?

时间:2013-01-16 15:05:30

标签: c# asp.net sql security

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

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

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

OR

在检查会话时,管理员是否应由特殊 ID 确定?

假设管理员是 id = 1

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

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

2 个答案:

答案 0 :(得分:3)

我不会检查特定的ID,而是检查用户类型。您不知道数据是否会发生变化,或者您是否需要添加其他管理员。在您的应用程序中对这样的值进行硬编码通常是一个坏主意。而是创建一个UserType类并检查UserType.Admin或UserType.User角色并处理BLL和/或DAL中的代码。

所以为了回答你的问题,你首先实施会很好。

祝你好运。

答案 1 :(得分:1)

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

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

所以你有一个用户表和一个关卡表。

在关卡表中有类似的内容:

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

然后在用户表中为每个用户提供一个级别编号,这样您就可以轻松地添加级别并具有要查找的定义。

或者如果你想过度杀伤:

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

在user_level_link表中有类似的内容:

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

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