Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
Asp.net 允许一个用户同时是;“用户”;及;行政";角色_Asp.net_Security_Authorization_Roles - Fatal编程技术网

Asp.net 允许一个用户同时是;“用户”;及;行政";角色

Asp.net 允许一个用户同时是;“用户”;及;行政";角色,asp.net,security,authorization,roles,Asp.net,Security,Authorization,Roles,我有一个问题,想知道是否有人有一个建议。在我正在开发的一个网站上,我使用Asp.net简单成员身份,但现在我正在迁移到Asp.net Identity 2。我有两个角色:“用户”和“管理员”。管理员可以执行管理员任务、配置、数据库管理等,但不能执行“用户操作”。因此,管理员不是“超级用户”-它只是具有不同的功能 我面临的问题是,用户的唯一标识符是他们的电子邮件。因此,如果有人想独自使用系统,他必须创建两个帐户(一个管理员和一个用户),因此他必须有两封电子邮件。这是一个问题。我可以很容易地向该用户

我有一个问题,想知道是否有人有一个建议。在我正在开发的一个网站上,我使用Asp.net简单成员身份,但现在我正在迁移到Asp.net Identity 2。我有两个角色:“用户”和“管理员”。管理员可以执行管理员任务、配置、数据库管理等,但不能执行“用户操作”。因此,管理员不是“超级用户”-它只是具有不同的功能

我面临的问题是,用户的唯一标识符是他们的电子邮件。因此,如果有人想独自使用系统,他必须创建两个帐户(一个管理员和一个用户),因此他必须有两封电子邮件。这是一个问题。我可以很容易地向该用户添加“用户”和“管理员”角色,但这会使系统更难用于“用户”角色,我希望避免这种情况

我使用角色来授权服务器上的路由(MVC和web api)和UI(SPA)上的基本(如隐藏元素)内容,因此,它已经是系统的一部分,但如果需要,我愿意更改它

我在想做这样的事情:

当用户被配置为管理员时,每次登录时,我都会询问他是否希望成为此会话的管理员或用户。
如果他选择“用户”,我会为他设置一个用户角色并登录。
如果他选择“管理员”,我会为他设置一个“管理员”角色并登录

你觉得怎么样?有人有更好的主意吗?这感觉像是黑客攻击,而且黑客攻击与安全性不匹配:/


我发现了一个问题-有时我需要向管理员发送电子邮件(当他们离线时)。这样,我就不能只依赖UserRole表,还必须始终检查User.IsAdministrator标志。这不是一个大问题,但会给事情增加一点复杂性。

您需要使用角色。一个用户可以同时是多个角色的成员,因此您可以有一个用户是“用户”角色的成员,一个用户是“管理员”角色的成员,或者一个用户同时是“用户”和“管理员”角色的成员

你已经提出了这个想法,我就是这样做的,如果你想控制他们能看到什么(这样“管理员”成员只能看到通常“用户”角色用户可以看到的东西),那么你可以在任何表单上(或将其放在母版页上)有一个下拉列表,允许用户打开和关闭管理员内容,然后,您可以记住他们在会话对象中的选择,并在每次加载页面时引用该选择。e、 g

  if user.IsInRole("Admin") and IsNothing(Session("HideAdmin")) Then
       'Show Admin Stuff
  End If

或者类似的问题。

这类问题在数据库设计时解决,而不是在开发时解决。你别无选择,我认为最好的办法是创建第三个拥有这两种权利的用户