core

NET Core中的认证管理解析

試著忘記壹切 提交于 2020-04-03 22:16:18
2016-08-19 07:15 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册、登录等很多页面,也可以使用AuthorizeAttribute进行各种权限管理,看起来似乎十分方便。不过生成的代码都替我干了些什么我一团雾水。看了下生成的数据表,功能也挺复杂的。实际上我需要的只是基于用户和角色的认证管理,而且用户资料是使用现有的库,但使用.NET Core自带的认证组件必须要依赖EF,表的结构也很多对不上,所以学习了下自带的认证组件的实现,然后自己写了个认证服务替换了Identity组件,同时Cookie管理使用自带的Cookie中间件、可以使用AuthorizeAttribute进行认证。复杂的需求还没遇到,所以就学习到了这里。这篇博客主要讨论最简单情况下的的基于用户和角色的认证。关于.NET Core自带认证组件的一些基本用法,可以参考。 0x01 .NET Core中的认证管理 提到认证管理,首相想到的就是用户的注册、登录、注销以及给用户添加/删除角色等功能。其中用户信息,角色信息等都是保存在数据库中的。所以主要包含数据库操作和登录业务逻辑两部分。在登录业务逻辑层面,.NET Core主要通过三个比较核心的类UserManager、RoleManager

1.NET Core 概述

China☆狼群 提交于 2020-04-03 17:34:32
.NET Core 概述 .NET Core是一个免费的、开源的、跨平台的、广泛使用的Web框架;它是由微软维护的。社区广泛参与支持的一个框架。.NET Core可以运行在:Windows、MacOS以及Linux操作系统上。 .Net Core可以用来开发各种不同的应用程序,例如:移动端、桌面端、Web、Cloud、IoT、机器学习、微服务、游戏开发等等。 .Net Core是从头到尾重新开发的一个模块化、轻量级、快速的、跨平台框架。它包含了运行一个.NET Core基本程序所必须的核心特性。其他特性,例如:Nuget包,你可以根据需要添加到应用程序中,所以.Net Core启动快,内存占用少,并且易于维护。 为什么使用.NET Core .Net Framework有一些限制。例如,它只能运行在Windows平台上,此外还有,你需要针对不同的平台应用程序,例如:Windows桌面应用程序、Windows应用商店、Windows Phone以及Web应用程序,使用不同的.NET APIS;除此之外,.NET Framework自身的依赖项太多,应用程序任何一点小的改动,都会要修改很多地方。 时代发展到今天,跨平台的应用程序开发变得非常重要,通过跨平台开发,我们可以写一处代码,就可以各个平台都可以运行。使用.NET Core就可以轻松做到这一点。 .NET Core 优点 1

给 EF Core 查询增加 With NoLock

大城市里の小女人 提交于 2020-04-03 02:13:31
给 EF Core 查询增加 With NoLock Intro EF Core 在 3.x 版本中增加了 Interceptor ,使得我们可以在发生低级别数据库操作时作为 EF Core 正常运行的一部分自动调用它们。 例如,打开连接、提交事务或执行命令时。 所以我们可以自定义一个 Interceptor 来记录执行的 sql 语句,也可以通过 Interceptor 来实现 sql 语句的执行。 这里我们可以借助 Interceptor 实现对于查询语句的修改,自动给查询语句加 (WITH NOLOCK) , WITH NOLOCK 等效于 READ UNCOMMITED (读未提交)的事务级别,这样会造成一定的脏读,但是从效率上而言,是比较高效的,不会因为别的事务长时间未提交导致查询阻塞,所以对于大数据场景下,查询 SQL 加 NOLOCK 还是比较有意义的 NoLockInterceptor 继承 DbCommandInterceptor ,重写查询 sql 执行之前的操作,在执行 sql 之前增加 WITH(NOLOCK) ,实现代码如下: public class QueryWithNoLockDbCommandInterceptor : DbCommandInterceptor { private static readonly Regex

2019.NET Conf China(中国.NET开发者峰会)活动全纪录:.NET技术之崛起,已势不可挡

谁都会走 提交于 2020-04-02 05:55:25
一、微软走向开放与.NET Core的诞生 当今时代,气象更新,技术飞速发展。 当今时代,开发者大概是最优秀的群体。每一位开发者,无不奋勇向前,努力追寻时代的步伐,以大无畏的精神迎接挑战,紧跟大时代成就企业发展的宏伟蓝图的同时,也在实现自己的个人梦想。 微软,无疑便是最善于应对时代变化的英雄,从比尔盖茨选择从哈佛大学创业开始,历经四十年时间,经过了三个变革的时期。每个时代都以其独特的方式深深地鼓舞人心,哪怕历经千辛万苦,哪怕一度前途充满阴霾,也能实现自我价值的刷新,并重回巅峰。 当代的微软,已经从一家技术驱动型公司,变革为一家文化驱动型公司,在纳德拉的领导下,云战略,开放,分享,自我刷新的企业文化精神已经让人们深深的意识到,那个沉睡的巨象一旦觉醒,该有着多么大的魄力和影响力。 大环境已经在悄然改变,在隔壁甲骨文公司走向封闭给Java社区带来一点点阴霾时,这边的.NET,也迎来了新的发展机遇。微软不再靠自己一家企业来控制这种优秀的技术,而是成立了一个.NET基金会,他扮演着技术公司于开发者之间的窗口,旨在加强和扩大以.NET技术为核心的技术生态系统。并随着.NET技术交给了社区由基金会来管理,基于.NET的开源生态已经如星火燎然之势蓬勃开展起来。到目前为止该基金会的参与者已经包括谷歌,红帽等知名互联网公司,这么多优秀的企业都参与其中。众人拾柴火焰高,有了这么多企业的积极参与,

.NET Core扩展IServiceCollection自动注册服务

末鹿安然 提交于 2020-03-30 13:05:01
前言 在ASP.NET Core中使用 依赖注入 中使用很简单,只需在 Startup 类的 ConfigureServices ()方法中,通过 IServiceCollection 接口进行注入即可,其它的无需关心。 通过接口的Add*方法进行注册,代码如下: 1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddSingleton<IUser, MyUser>(); 4 } 但是这样的注入方法多了之后,就会产生太多行的services.Add...方法,看着实在是不爽; 回想起MEF,只需要两个约定好的特性就可以完成注册和注入的声明,比起现在一行行注册方式,简直不要太好。 所以我对 IServiceCollection 接口进行了 扩展 ,让它能与 MEF 类似的自动处理注册类型,而且支持通过多种方式进行注册。 我对接口进行了如下改造,让它支持 特性(attribute)、类型(继承或接口)、名称、命名空间、程序集名 等进行批量的注册。 展示一下特性注册,在 ConfigureServices 加入如下: services.Scan(scan => scan.FromAssemblyOf<IUser>() .AddClasses().UsingAttributes());

年末展望:Oracle 对 JDK收费和.NET Core 给我们的机遇

≯℡__Kan透↙ 提交于 2020-03-30 02:37:12
2018年就结束了,马上就要迎来2019年,这一年很不平凡,中美贸易战还在继续,IT互联网发生急剧变化,大量互联网公司开始裁员,微软的市值在不断上升 ,在互联网公司的市值下跌过程中爬到了第一的位置,我们展望2019年,相信前方的坑很多,这里想聊下一个和我们的工作生活息息相关的问题,那就是Oracle 对 JDK收费和.NET Core 给我们的机遇。 Oracle 宣布,"2019年1月之后",如果没有商业许可,Java SE 8公开更新将无法用于"商业,商业或生产用途"。组织现在需要对运行Java SE 8的所有软件进行评估,并开始计算明年他们正在寻找的潜在账单。 图片 截自 : https://www.oracle.com/assets/java-se-subscription-pricelist-5028356.pdf 国内又有那些互联网公司是使用Java作为核心技术的公司呢?这些公司是否给 Oracle 付费了,是否所有服务器都付费了呢?中国的政府机构又有多少需要给 Oracle 付费购买授权?中美贸易战的90天限期谈判在继续, 打击侵犯知识产权,中国已经在行动。新加坡亚洲新闻台报道说,中国38个部门12月4日发布联合政策,以应对一系列侵犯知识产权的行为。中国拟在这一领域建立一个“社会信用体系”,公布全国范围内严重侵犯知识产权者的名单。12月5日耿爽表示

【目录】asp.net core系列篇

喜欢而已 提交于 2020-03-30 01:26:25
随笔分类 - asp.net core系列篇 <div class="post"> <h5><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_0" href="https://www.cnblogs.com/MrHSR/p/11184801.html">asp.net core系列 68 Filter管道过滤器</a></h5> <div class="postbody"> <div class="c_b_p_desc">摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫"筛选器"也叫"过滤器",是请求处理管道中的特定阶段之前或之后运行代码。filter用于处理横切关注点。 横切关注点的示例包括:错误处理、缓存、配置、授权和日志记录。 filter可以避免重复代码,通过Attribut<a href="https://www.cnblogs.com/MrHSR/p/11184801.html" class="c_b_p_desc_readmore">阅读全文</a></div> </div> <p class="postfoot"> posted @ <a href="https://www.cnblogs.com/MrHSR/p/11184801.html"

详解Session分布式共享(.NET CORE版)

感情迁移 提交于 2020-03-29 00:56:06
一、前言&回顾 在上篇文章 Session分布式共享 = Session + Redis + Nginx 中,好多同学留言问了我好多问题,其中印象深刻的有:nginx挂了怎么办?采用Redis的Session方案与微软Session方案相比,有什么优势呢?Cookie也可以取代Session的,采用Redis的Session方案优势在哪里?Nginx的iphash方式到底是什么?MachineKey有啥用?Net Core怎样实现? 那会儿看到大家的提问,我的回答也只是从应用层面回答,基本上的回答可以总结为:“别人这么做了,解决了这个问题,我用这个方法也解决了这个问题,原理请看链接。”很惭愧的说,那时的我并没有完全理解他真正的优势在哪里,只是凭着直觉和经验知道这样做比较好,知道当一部分东西不可控时候,将其解耦、可视化、集群就可以让一个系统更加健壮,但没有一个理论支撑。经过最近一段时间的查阅资料和阅读书籍,对此有了深刻理解,本文将从网站架构的可用性角度对这种Session共享进行分析和讲解,并用.net core再次实现这种架构模式。(Session分布式共享的net core版,因为工作没有机会应用到生产环境,过往经验就更别提了,所以只是研究性的,请大家注意,但园子里早有大牛写出了相关文章,本文结束会将相关文章贴出) 二、网站可用性--Session管理

升级到 .NET Core 3.1

家住魔仙堡 提交于 2020-03-28 18:14:07
微软升级的频率有点快,转眼 .NET Core 升级到 3.1 版了,这是一个长期支持版本,意味着 .NET Core 正式进入成熟期。 不过,对于开发人员来说,你的项目又需要迁移了。 升级项目文件 对于 ASP.NET Core 3.1 ,你需要 TargetFramework 设置为 netcoreapp3.1 , 并且,在 .NET Core 2.0 中,需要引用的 Microsoft.AspNetCore.All 也不再需要。或者在 .NET Core 2.2 中的 Microsoft.AspNetCore.App 也一样不再需要, 你的基础项目文件看起来如下所示: <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> </Project> 是不是非常清爽? 框架引用 通过上述某个包提供的 ASP.NET Core 功能,也作为 Microsoft.AspNetCore.App 共享框架的一部分提供。 共享框架是安装在计算机上并包括运行时组件和目标包的一组程序集( .dll 文件)。 有关详细信息,请参阅 共享框架 。 面向 Microsoft.NET.Sdk.Web SDK 的项目

在 .net core 与 .net framework 应用之间共享库

送分小仙女□ 提交于 2020-03-28 18:01:05
如果你对 .net core 做了任何重要的提交,你就需要为 .net framework 共享同样的库,因为,.net core 是一个新兴的系统生态系统,仍然缺失很多部分。 在混合系统中,你有两个选项来共享库。首先,你可以开发一个 .net 标准库,只要版本匹配,就可以直接共享。或者,你可以使用多目标方式对多于一个的平台进行交叉编译。 通过 .NET Standard 方式共享 Microsoft 引入了 .NET Standard 以提供在微软生态下的公共标准。它可以看作是可移植类库 PCL 的后继者,简化了针对不同平台的业务。 在PCL 基于平台能力的配置中, .NET Standard 提供了精心选择的 API 集。 结果就是你可以创建可以直接用于 .NET Framework 和 .net core 的库(甚至包括 Xamarin )。你只需要确保 .NET Standard 库的 Nuget 包添加到 .NET 应用中。 现在已经有半打的 .NET Standard 存在,所以并不能立即搞清楚目标版本,感觉走了 DLL 地狱,来了 .NET Standard 地狱。简单来说,越高版本的 .NET Standard 就提供越多的 API 可用,而越低的版本支持的平台越多。 与任何 .net core 迁移过程一样,你将是依赖项的囚徒,尽管适配 .NET Standard