【发布时间】:2014-07-06 12:47:51
【问题描述】:
我遇到了问题,想知道是否有人有建议。在我正在开发的网站上,我使用的是 Asp.net Simple Membership,但现在我正在迁移到 Asp.net Identity 2。我有 2 个角色:“用户”和“管理员”。管理员可以做管理员资料、配置、数据库管理等。但不能做“用户的事情”。所以,管理员不是“超级用户”——它只是有不同的功能。
我面临的问题是用户的唯一标识符是他们的电子邮件。所以,如果有人想自己使用系统,他必须创建 2 个帐户(一个管理员和一个用户),所以他必须有 2 个电子邮件。这是个问题。我可以轻松地向该用户添加“用户”和“管理员”角色,但这会使系统更难用于“用户”角色,我想避免这种情况。
我使用角色来授权服务器上的路由(MVC 和 Web api)以及 UI (SPA) 上的基本(如隐藏元素)事物,因此,它已经是系统的一部分 - 但我愿意改变如有必要。
我正在考虑做这样的事情:
当用户被配置为管理员时,每次他登录时,我都会询问他是否想成为此会话的管理员或用户。
如果他选择“用户”,我为他设置一个用户角色并登录。
如果他选择“admin”,我为他设置一个“admin”角色并登录。
你怎么看?有人有更好的主意吗?这感觉像是一种黑客行为,而且黑客行为不适合安全性:/
我发现了一个问题 - 有时我需要向管理员发送电子邮件(当他们离线时)。有了这个,我不能只依赖 UserRole 表,也总是需要检查 User.IsAdministrator 标志。这不是一个大问题,但会给事情增加一点复杂性。
【问题讨论】:
标签: asp.net security authorization roles