ASP.NET Core高级组件

一.Authentication与Authorization

在一个系统中,不是所有功能都能被自由地访问的,比如有的功能需要注册用户才能访问,有的功能需要 VIP 用户才能访问。针对资源的访问限制有两个概念:Authentication 、Authorization。Authentication 可以翻译为“鉴权”或者“验证”,它用来对访问者的用户身份进行证:Authorization 可以翻译为“授权”,它用来验证访问者的用户身份是否有对资源行访问的权限。通俗来说,Authentication 是用来验证“用户是否登录成功”的,Authorizati是用来验证“用户是否有权限访问”的。Authentication 和Authorization 在中文技术社区中有很多不同的翻译方式,而且在编程的时候经常需要直接涉及这两个单词,为了强化这两个概念,本书将会直接使用这两个英文单词,而不使用它们的中文翻译。由于Authentication 和 Authorization 的拼写非常类似,因此读者可能非常容易混淆。这里教读者一个快速区分的技巧:Authorization 是用来验证“用户是否有权限访问”的,最常见的权限验证就是“用户是否拥有某个角色”,而“角色”的英文就是role,role 的首字母为r,而只有Authorization 中才包含r这个字母。

二.标识框架identity框架

大部分系统中都需要通过数据库保存用户、角色等信息,并且需要注册、登录、密码重置、角色管理等功能。ASPNET Core 提供了标识(identity)框架,它采用RBAC(role-based acc ontrol,基于角色的访问控制)策略,内置了对用户、角色等表的管理及相关的接口,从而简化了系统的开发。

三.案例

安装 .Identity框架的包

安装语句为:Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore -Version 6.0.1

User实体类

Role实体类

IdDbcontext类

在Pregrame.cs中配置

安装数据库的包Install-Package MySql.EntityFrameworkCore -Version 7.0.0-preview5

安装数据库迁移的工具包Install-Package Microsoft.EntityFrameworkCore.Tools -Version 7.0.1

扫描二维码关注公众号,回复: 15947435 查看本文章

然后输入语句Add-Migration Init

然后Update-Database

在数据库迁移时报这个错时

新建一个类DbContextDesignTimeFactory

四.如何使用UserManger和RoleManger

创建一个DemoController容器类

猜你喜欢

转载自blog.csdn.net/qq_71012549/article/details/128552796