在 ASP.NET 中使用 Identity 2.1 对用户进行身份验证和授权

Posted

技术标签:

【中文标题】在 ASP.NET 中使用 Identity 2.1 对用户进行身份验证和授权【英文标题】:Using Identity 2.1 in ASP.NET for Authentication and Authorization of users 【发布时间】:2018-03-14 15:22:15 【问题描述】:

这是我的第一个 ASP.NET 项目,我必须为此项目使用 MVC 5 和 Identity 2.1。

我已经查找了有关使用 Identity 2.1 进行身份验证和授权的信息,但我仍然感到困惑,因为没有文章对其进行了完整的详细解释,而且他们需要您熟悉旧版本,而新文章都是关于ASP.NET Core MVC。

假设我有一个包含 3 列的水果表:

id = 1,名称 = 苹果,数量 = 4;

id = 2,名称 = 橙色,数量 = 2;

id = 3,名称 = 香蕉,数量 = 3;

。 . .

我们有一些管理员用户,他们可以将其他水果类型添加到列表中。

管理员用户也可以创建其他用户帐户并授予他们查看或编辑一个或多个水果记录的权限。

比如userid1可以查看苹果数量,或者userid2可以查看和编辑橙子数量。

我的问题是如何使用 Identity 2.1 来实现这个场景?我可以使用角色和声明来实现它吗?如果是,请提供一些示例代码。

谢谢,抱歉我的英语不好。

【问题讨论】:

bitoftech.net/2015/03/11/… 【参考方案1】:

您可能无法立即满足您的所有需求,但您可以扩展基本类以实现您的目标。这是我的想法,您可以拥有管理员和基本角色,您将需要一个水果类型主表和一个水果类型 - 用户 ID 权限表。 在您的扩展授权类中,您需要检查基本用户是否可以访问某些水果类型以及他/她拥有什么样的权限。

【讨论】:

感谢您的回复,也许我问的问题并不具体。我的问题出在您回答的这一部分“在您的扩展授权类中,您需要检查基本用户是否可以访问某些水果类型以及他/她拥有什么样的特权。”我该如何实施?我的意思是我需要检查控制器/操作中的权限吗?还是在我的请求到达操作方法之前的某个地方? 您所说的“扩展授权类”是指我从 AuthorizationAttribute 类创建一个继承类并在那里检查权限吗? 不客气,Qubit。我会说这将是一个设计决定。这取决于水果类型在您的项目中的引用范围。根据横切关注点,在扩展授权属性类中进行所有安全检查会很好,但如果只有一个控制器涉及水果类型,我可能会将检查放在控制器级别。只是我的两分钱。

以上是关于在 ASP.NET 中使用 Identity 2.1 对用户进行身份验证和授权的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Identity 2 使用短信重置密码

ASP.Net Identity 2 使用 SMS 密码登录 - 不使用双因素身份验证

Asp.net Identity 2.0 更新用户

如何在 ASP.Net MVC Identity 2 中更改密码验证?

如何在 Asp.Net identity 2 中手动检查密码?

ASP.NET Core Identity UserManager.IsInRole 调用在 2.2 中有效,但在 3.0 中引发 InvalidOperation