Asp.Net Core第三讲
本章主要讲解关于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:打开程序包管理器控制台,生成迁移,执行迁移
- 生成迁移 Add-Migration InitDataBase
- 执行迁移 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第三讲相关推荐
- Asp.Net Core在线生成二维码
前言: 原先用zxing Code写过基于Winfrom的批量生成二维码工具,以及单个生成二维码工具:批量生成二维码Gihub源代码 今天尝试用QRCoder 加 Asp.Net Core 写了一个在 ...
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...
- iactionresult 图片_从显式类型的ASP.NET Core API控制器(不是IActionResult)返回404
在ASP.NET Core 2.1中使用return null;解决了此问题: public ActionResult Get(int id) { Thing thing = GetThingFrom ...
- 用hosting.json配置ASP.NET Core站点的Hosting环境
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program {pu ...
- [asp.net core]SignalR一个例子
摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...
- 从头编写 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部分 ...
- 在 Azure 上部署 Asp.NET Core Web App
在云计算大行其道的时代,当你要部署一个网站时第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core的网站呢?Azure 的 Web App ...
- 如何使用C#在ASP.NET Core中轻松实现QRCoder
by Yogi 由瑜伽士 如何使用C#在ASP.NET Core中轻松实现QRCoder (How to easily implement QRCoder in ASP.NET Core using ...
- 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 ...
最新文章
- html双人台球游戏,使用h5和matter.js实现的简化版台球小游戏
- 最靠谱的解决 Ubuntu 18.04 / Linux mint 19 安装网易云音乐 不能正常点击启动问题
- 使用webpack配置react并添加到flask应用
- 互动直播的视频录制与合成—支持多人离线重入
- 利用Attribute扩展MVC的Title和Sitemap
- linux下使用dd命令制作ubuntu的u盘启动,Ubuntu使用dd命令制作U盘系统启动盘
- 微博预期12月8日登陆港交所 最终发售价定为272.8港元
- bzoj 3173: [Tjoi2013]最长上升子序列(离线二分+树状数组)
- 隐藏nginx 版本号信息(转)
- 计算机物联网软件工程,关于计算机物联网的应用分析
- java网上购物商城文献综述,JSP电子商务网上购物系统的设计(源代码+论文+开题报告+外文翻译+文献综述)...
- 解决笔记本拔掉电源线和插上电源线鸣笛问题
- Prometheus自定义线程池指标暴露
- AI如何识别西瓜和冬瓜?
- 盒子模型(Box Model)
- 群晖NAS Git Server项目源代码管理 配置搭建
- 隐藏a标签html,a标签显示隐藏 js怎么控制a标签的显示和隐藏
- No module named 'urllib3'
- redhat linux安装gcc编译器
- 必读的数据库领域论文
热门文章
- 阴阳师IP第一款衍生产品,上线三年又做了一次大胆升级
- 时空智友采购流程涉及表
- 分享20个最实用的 .NET 开源项目
- C#对TXT文件内容进行增删改操作
- 机智云CEO黄灼:AIoT+5G引领物联网产业新机遇
- 全球与中国光纤输出半导体激光器市场现状及未来发展趋势
- 你的设备遇到问题,需要重启(电脑蓝屏哭脸)
- 常见的触发函数的事件(实现不同的用户体验)
- easypoi 语法_曼哈顿语法使用方法+网站分享
- 全网详细解决java.lang.ClassCastException: xxx类型 cannot be cast to xxx类型