本章主要讲解关于EntityFramwork Core的实际使用步骤,以及身份验证技术Token的实际使用步骤

1. EntityFramework Core

a: 什么是EntityFramework Core?

EntityFramework Core是轻量级,可扩展和开源的软件,同时也是跨平台的,是微软官方推荐的数据访问平台;EntityFramework Core同样也是目前比较流行的ORM(Object-Relational Mapper)框架。

b: 为什么使用EntityFramework Core?

跨平台,简单,安全

c: 怎么使用EntityFramework Core?

EntityFramework Core支持Code First模式

数据库不存在,需要先创建应用程序所需要的数据实体类和数据库上下文类,然后创建数据库和相关表;

数据库存在,可以使用已存在数据库反向生成Code First代码;

eg1: 数据库不存在

步骤1:首先NuGet安装Microsoft.EntityFrameworkCore.SqlServer组件和Microsoft.EntityFrameworkCore.Tools组件

步骤2:创建数据实体类和数据库上下文类

步骤3:在appsettings.json配置文件中创建数据库连接字符串

步骤4:在StartUp类中的ConfigureServices方法中注册数据库上下文类服务到容器

步骤5:可设置种子数据 ,初始表中的数据 (此步依据自己需要设置即可)

步骤6:打开程序包管理器控制台,生成迁移,执行迁移

  1. 生成迁移  Add-Migration InitDataBase
  2. 执行迁移  Update-DataBase

步骤7:更新数据库结构

直接更新数据实体类和数据库上下文类,再次生成迁移,执行迁移

eg2: 数据库存在

步骤1:首先NuGet安装Microsoft.EntityFrameworkCore.SqlServer组件和Microsoft.EntityFrameworkCore.Tools组件

步骤2:打开程序包管理器控制台,执行从数据库生成模型类的命令

Scaffold-DbContext ‘连接字符串’ 数据提供程序名称 -OutputDir 结果输出文件夹 -Context 数据上下文名 –DataAnnotations

示例:Scaffold-DbContext  'Data Source=.;Initial Catalog=SchoolDb; Integrated Security=True;' Microsoft.EntityFrameworkCore.SqlServer  -OutputDir Models  -Context SchoolContext

步骤3:在StartUp类中的ConfigureServices方法中注册数据库上下文类服务到容器

步骤4:更新数据库结构

直接更新数据实体类和数据库上下文类,生成迁移,执行迁移

2. 安全认证token的实现

a: 为什么使用token ?

为了验证使用者的身份,需要客户端向服务器端提供一个可靠的验证信息

b: 什么是jwt token?

jwt token : 为了验证使用者的身份,需要客户端向服务器端提供一个可靠的验证信息,称为token,这个token通常由Json数据格式组成,通过hash散列算法生成一个字符串,所以称为Json Web Token (Json表示令牌的原始值是一个Json格式的数据,web表示是在互联网传播的,token表示令牌,简称jwt)

jwt 由三部分组成,头部(Header),载荷(Payload)(这一部分主要是信息存储部分), 签名(Signature)(这一部分主要是确保信息没有被篡改)

c: 怎么使用jwt token实现身份验证?

第一步:使用nuget安装Microsoft.AspNetCore.Authentication.JwtBearer

第二步:在Startup类的ConfigureServices方法中添加如下代码

第三步:在Startup类的Configue方法中添加以下代码

第四步:创建JwtTokenUtil工具类,用于生成Jwt Token

第五步:登录成功,返回token

第六步:保护相应的动作方法

第七步:前端请求的时候设置请求头

headers['Authorization'] = 'Bearer ' + token

第八步:后端依据请求的token识别出请求的UserName

首先在Startup类中的ConfigureServices添加以下代码

然后给类型ClaimsPrincipal类型扩展一个方法

最后可以通过注入IHttpContextAccessor,从请求的上下文类HttpContext中获取到当前登录人的信息

结尾:本篇博客中一些描述如有错误,请大家指正

Asp.Net Core第三讲相关推荐

  1. Asp.Net Core在线生成二维码

    前言: 原先用zxing Code写过基于Winfrom的批量生成二维码工具,以及单个生成二维码工具:批量生成二维码Gihub源代码 今天尝试用QRCoder 加 Asp.Net Core 写了一个在 ...

  2. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...

  3. iactionresult 图片_从显式类型的ASP.NET Core API控制器(不是IActionResult)返回404

    在ASP.NET Core 2.1中使用return null;解决了此问题: public ActionResult Get(int id) { Thing thing = GetThingFrom ...

  4. 用hosting.json配置ASP.NET Core站点的Hosting环境

    通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program {pu ...

  5. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  6. 从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD

    第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...

  7. 在 Azure 上部署 Asp.NET Core Web App

    在云计算大行其道的时代,当你要部署一个网站时第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core的网站呢?Azure 的 Web App ...

  8. 如何使用C#在ASP.NET Core中轻松实现QRCoder

    by Yogi 由瑜伽士 如何使用C#在ASP.NET Core中轻松实现QRCoder (How to easily implement QRCoder in ASP.NET Core using ...

  9. vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作

    vue.js crud 介绍 (Introduction) In this article we are going to create a web application using ASP.NET ...

最新文章

  1. html双人台球游戏,使用h5和matter.js实现的简化版台球小游戏
  2. 最靠谱的解决 Ubuntu 18.04 / Linux mint 19 安装网易云音乐 不能正常点击启动问题
  3. 使用webpack配置react并添加到flask应用
  4. 互动直播的视频录制与合成—支持多人离线重入
  5. 利用Attribute扩展MVC的Title和Sitemap
  6. linux下使用dd命令制作ubuntu的u盘启动,Ubuntu使用dd命令制作U盘系统启动盘
  7. 微博预期12月8日登陆港交所 最终发售价定为272.8港元
  8. bzoj 3173: [Tjoi2013]最长上升子序列(离线二分+树状数组)
  9. 隐藏nginx 版本号信息(转)
  10. 计算机物联网软件工程,关于计算机物联网的应用分析
  11. java网上购物商城文献综述,JSP电子商务网上购物系统的设计(源代码+论文+开题报告+外文翻译+文献综述)...
  12. 解决笔记本拔掉电源线和插上电源线鸣笛问题
  13. Prometheus自定义线程池指标暴露
  14. AI如何识别西瓜和冬瓜?
  15. 盒子模型(Box Model)
  16. 群晖NAS Git Server项目源代码管理 配置搭建
  17. 隐藏a标签html,a标签显示隐藏 js怎么控制a标签的显示和隐藏
  18. No module named 'urllib3'
  19. redhat linux安装gcc编译器
  20. 必读的数据库领域论文

热门文章

  1. 阴阳师IP第一款衍生产品,上线三年又做了一次大胆升级
  2. 时空智友采购流程涉及表
  3. 分享20个最实用的 .NET 开源项目
  4. C#对TXT文件内容进行增删改操作
  5. 机智云CEO黄灼:AIoT+5G引领物联网产业新机遇
  6. 全球与中国光纤输出半导体激光器市场现状及未来发展趋势
  7. 你的设备遇到问题,需要重启(电脑蓝屏哭脸)
  8. 常见的触发函数的事件(实现不同的用户体验)
  9. easypoi 语法_曼哈顿语法使用方法+网站分享
  10. 全网详细解决java.lang.ClassCastException: xxx类型 cannot be cast to xxx类型