在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
}
哪种方法更好,更安全?有更好的吗?
答案 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执行此操作,因为当您打算进一步扩展网站时,它可能会导致问题。