随笔分类 -  .NET Core

摘要:控制反转Inversion of Control DI和IoC几乎都是成对出现的,我们在理解依赖注入之前首先要弄明白什么是IoC,也就是控制反转,体现的就是控制权的转移,即控制权原来在A中,现在需要B来接管。那么在软件中是如何实现的。通过一个例子来说明传统设计在采用IoC之后是如何实现反转的。 我们 阅读全文
posted @ 2020-10-14 16:35 蜗牛的希望 阅读(190) 评论(0) 推荐(0)
摘要:ASP.NET Core 3 启动过程(一) 最近又忙于各种扯淡,今天来一个需求,明天又来一个需求,后天需求又变了,这可能是很多人遇到的情况。正在紧张的忙碌着,突然一个信息把所有计划打乱了,“这个项目很重要,要订100套,手里面的活停了,赶紧做这个”,其实所谓的100套也不过是用户想让先改他的需求的 阅读全文
posted @ 2020-09-18 15:13 蜗牛的希望 阅读(334) 评论(0) 推荐(0)
摘要:前面我们认识了jwt的token颁发模式,其中的应用场景和部分缺陷已经很是了解了。有些场合并不适合jwt,特别是针对第三方进行使用时,比如我们使用qq或者微信登陆博客园或其他第三方应用时。 Ids4的token颁发可以简单的概述为4中场景,客户端模式,密码模式,简化模式,授权码模式。还有一个混合模式 阅读全文
posted @ 2020-09-01 14:20 蜗牛的希望 阅读(296) 评论(0) 推荐(0)
摘要:授权码模式是一种混合模式,是目前功能最完整、流程最严密的授权模式。它主要分为两大步骤:认证和授权。其流程为: 用户访问客户端,客户端将用户导向Identity Server。 用户填写凭证信息向客户端授权,认证服务器根据客户端指定的重定向URI,并返回一个【Authorization Code】给客 阅读全文
posted @ 2020-09-01 14:19 蜗牛的希望 阅读(354) 评论(0) 推荐(0)
摘要:授权的过程核心就是验证完token有效之后,通过claims中的信息进行判断,使用特性[Authorize],并对claims中的信息进行校验的过程。 需要在Startup文件中的Configure函数中添加app.UseAuthorization();,在asp.net core3.1中新建了we 阅读全文
posted @ 2020-09-01 14:09 蜗牛的希望 阅读(315) 评论(0) 推荐(0)
摘要:1)jwt的加密解密过程 jwt验证的核心就是加密解密的过程,掌握了这个过程,也就掌握了jwt的原理。jwt的三部分中,header和payload是明文的,能够直接读出来,签名Signature部分是进行了加密处理的。 Signature的加密过程 为了得到签名部分,你必须有编码过的header、 阅读全文
posted @ 2020-08-31 08:27 蜗牛的希望 阅读(394) 评论(0) 推荐(0)
摘要:随着互联网技术的发展,cookie+session形式的用户认真逐渐不适应需求的扩展。在当前分布式微服务广泛流行的场景下,显然这种cookie+session无法满足,因为各个服务之间无法相互获取session信息。这里可能有人说使用redis来存储session信息,达到session共享等等其他 阅读全文
posted @ 2020-08-28 23:30 蜗牛的希望 阅读(216) 评论(0) 推荐(0)
摘要:关于用户认证,我们可能最先想到的就是session和cookie。那么什么是session,什么又是cookie?这就不得不说起http协议。 http协议是基于tcp协议之上的应用层协议。http协议在报文的编码上采用了文本形式,通信上采用客户端到服务器的请求-响应方式。http协议的文本形式报文 阅读全文
posted @ 2020-08-27 21:22 蜗牛的希望 阅读(195) 评论(0) 推荐(0)
摘要:分布式锁 1)阻塞锁: 尝试在redis中创建一个字符串结构缓存,方法传入的key,value为锁的过期时间timeout的时间戳。 若redis中没有这个key,则创建成功(即抢到锁),然后立即返回。 若已经有这个key,则先watch,然后校验value中的时间戳是否已经超过当前时间。 若已超过 阅读全文
posted @ 2020-08-25 11:53 蜗牛的希望 阅读(165) 评论(0) 推荐(0)
摘要:持久化 快照的方式(RDB) 文件追加方式(AOF) 快照形式: save和bgsave能快速的备份数据。但是。。。。。。。。。。, Save命令:将内存数据镜像保存为rdb文件,由于redis是单线程模型,期间会阻塞redis服务进程,redis服务不再处理任何指令,直到rdb文件创建完成为止。 阅读全文
posted @ 2020-08-25 11:52 蜗牛的希望 阅读(122) 评论(0) 推荐(0)
摘要:Redis事务 原子性:就是最小的单位 一致性:好多命令,要么全部执行成功,要么全部执行失败 隔离性:一个会话和另一个会话之间是互相隔离的 持久性:执行了就执行了,数据保存在硬盘上 典型例子:银行转账,A给B转账100万,首先要A的账户减去100万,然后B的账户增加100万,如果中间断了那就出问题了 阅读全文
posted @ 2020-08-24 21:01 蜗牛的希望 阅读(96) 评论(0) 推荐(0)
摘要:发布订阅,简单场景下的发布订阅完全可以使用。 可以简单的理解,将一个公众号视为发布者,关注公众号的人视作订阅者,公众号发布一条文章或者消息,凡事订阅公众号的都可以收到消息。一个人可以订阅多个公众号,一个公众号可以被多个人订阅。 //创建一个公众号--创建一个主题 Console.WriteLine( 阅读全文
posted @ 2020-08-24 15:15 蜗牛的希望 阅读(183) 评论(0) 推荐(0)
摘要:3)Set,可以去重的、无序的集合。可以取交集、并集。zset(sorted set),有序的、去重的集合,排序不是根据value排序,而是根据score排序。 using (RedisClient client = new RedisClient("127.0.0.1", 6379, "12345 阅读全文
posted @ 2020-08-23 23:49 蜗牛的希望 阅读(136) 评论(0) 推荐(0)
摘要:2)hash类型,上代码 using (RedisClient client = new RedisClient("127.0.0.1", 6379, "12345", 10)) { //删除当前数据库中的所有Key 默认删除的是db0 client.FlushDb(); //删除所有数据库中的ke 阅读全文
posted @ 2020-08-21 23:30 蜗牛的希望 阅读(138) 评论(0) 推荐(0)
摘要:Redis之品鉴之旅(一) 好知识就如好酒,需要我们坐下来,静静的慢慢的去品鉴。Redis作为主流nosql数据库,在提升性能的方面是不可或缺的。下面就拿好小板凳,我们慢慢的来一一品鉴。 1)redis号称是大数据高并发的利器,那么到底什么是redis? redis是nosql(not only s 阅读全文
posted @ 2020-08-20 23:16 蜗牛的希望 阅读(169) 评论(0) 推荐(1)
摘要:Implicit简化模式(直接通过浏览器的链接跳转申请令牌) 简化模式是相对于授权码模式而言的。其不再需要【Client】的参与,所有的认证和授权都是通过浏览器来完成的。 创建项目 IdentityServer的ASP.NET Core Web空项目,端口5300 MvcClient的ASP.NET 阅读全文
posted @ 2020-07-31 09:00 蜗牛的希望 阅读(482) 评论(0) 推荐(0)
摘要:使用密码保护API资源(资源所有者密码授权模式) 资源所有者(Resource Owner)就是指的User,也就是用户。所以也称为用户名密码模式。相对于客户端凭证模式,增加了一个参与者User。通过User的用户名和密码向IdentityServer申请Access Token。这种模式下要求客户 阅读全文
posted @ 2020-07-31 08:58 蜗牛的希望 阅读(444) 评论(0) 推荐(0)
摘要:使用客户端认证控制API访问(客户端授权模式) 场景描述 使用IdentityServer保护API的最基本场景。 我们定义一个API和要访问API的客户端。客户端从IdentityServer请求AccessToken,然后访问对应的API。 创建项目 IdentityServer的ASP.NET 阅读全文
posted @ 2019-03-08 09:30 蜗牛的希望 阅读(516) 评论(0) 推荐(0)
摘要:启动一个新的IdentityServer项目 从头开始,从基础开始,然后变得更加复杂,循序渐进的学习 工具:VS2017 15.9.8 .Net Core2.2 基本过程 创建一个新的ASP.NET Core项目 然后选择空项目 通过nuget添加IdentityServer4的包 当然也可以通过程 阅读全文
posted @ 2019-03-08 09:29 蜗牛的希望 阅读(225) 评论(0) 推荐(0)