Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定网站管理员?_C#_Asp.net_Sql_Security - Fatal编程技术网

C# 如何确定网站管理员?

C# 如何确定网站管理员?,c#,asp.net,sql,security,C#,Asp.net,Sql,Security,在ASP.NET项目(C#)和SQL Server 2008中,应该如何确定管理员 我应该在我的用户表中设置属性来确定管理员吗?即使我只有一个管理员 id username type -------------------------------------- 1 Ali1 admin 2 James3 user 3 Carlos31

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

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

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

在检查会话时,管理员是否应该由一个特殊的ID决定

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

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

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

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

因此,为了回答您的问题,您认为第一个实现会很好地工作


祝你好运。

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

因此,为了回答您的问题,您认为第一个实现会很好地工作


祝你好运。

我建议创建如下模式:

因此,您有一个用户表和一个级别表

在“级别”表中,有如下内容:

id           level
-------------------
1            admin
2            user
user_id    level
-------------------
1            1
2            1
2            2
然后在用户表中给每个用户一个级别号,这样您就可以轻松地添加级别,并根据定义进行查找

或者如果你想过度使用:

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

在user_level_link表中,有如下内容:

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

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

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

因此,您有一个用户表和一个级别表

在“级别”表中,有如下内容:

id           level
-------------------
1            admin
2            user
user_id    level
-------------------
1            1
2            1
2            2
然后在用户表中给每个用户一个级别号,这样您就可以轻松地添加级别,并根据定义进行查找

或者如果你想过度使用:

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

在user_level_link表中,有如下内容:

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


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

为什么不使用asp.net成员模式?@adripanico这是我的第一个asp.net项目,因此我不熟悉asp.net的内容,我更喜欢“经典编码”.我建议你去研究一下,因为它可以使很多过程变得更加灵活。我遵循了这本图图()。你为什么不使用asp.net成员模式?@adripanico这是我的第一个asp.net项目,所以我不熟悉asp.net的内容,我更喜欢“经典编码”。我建议你研究一下,因为它可以简化很多过程。我遵循了这个图图()。@AiBassam:这也让你能够轻松地将一些普通用户提升为管理员,反之亦然。。。(+1表示这个答案)@AiBassam:这也让你能够轻松地将一些普通用户提升为管理员,反之亦然。。。(+1表示此答案)不正确,您可以添加任意多的行和角色。是的,但一个用户只能有一个角色。您没有为一个用户分配多个角色,每个角色都应定义为特定的。另外,如果你真的想让一个用户拥有多个角色,你可以简单地针对用户存储一个数组,比如(1,2,6)。这是我听过的最糟糕的解决方案。这完全打破了关系模型。您可以添加第三个链接表,但我认为这超出了askers的要求。不正确,您可以添加任意多个行和任意多个角色。是的,但一个用户只能有一个角色。您没有为一个用户分配多个角色,每个角色都应该定义为特定的。另外,如果你真的想让一个用户拥有多个角色,你可以简单地针对用户存储一个数组,比如(1,2,6)。这是我听过的最糟糕的解决方案。这完全打破了关系模型。你可以添加第三个链接表,但我认为这超出了askers的要求。