最近将公司的项目用.netcore重写, 服务的http外部接口部分收发消息是DES加解密的, 那么在asp.net core mvc的action处理之前需要加入解密这个步骤. 我第一想到的是用filter的方法来做, 找到了ActionFilter, 重写了OnActionExecuting方法, 确实成功在action执行前拦截了下来, 但是request却是只读的. 这其实可以理解, 因为mvc已经做好了request的form\querystring之类的读取, 再做修改肯定不合适.…
HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable)更强,并具有自描述的特点.使用了HAL的API会更容易地被第三方开源库所调用,并且使用起来也很方便,开发者可以像处理普通JSON数据那样去处理API数据.有关HAL的更多信息,可以参考官方网站:http://stateless.co/hal_specification.html.目前,很多REST…
前言 ASP.NET Core 中 继承的是AuthorizationHandler ,而ASP.NET Framework 中继承的是AuthorizeAttribute. 它们都是用过重写里面的方法实现过滤请求的. 现在我们实现如何在 ASP.NET Core MVC 实现自定义授权. 关于AuthorizationHandler 详细介绍可以看这里 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/pol…
ASP.NET CORE 中使用AutoMapper进行对象映射 1.什么是AutoMapper? AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DTO,一般用于ViewModel模式和跨服务范畴. AutoMapper给用户提供了便捷的配置API,就像使用约定来完成自动映射那样. AutoMapper包含以下功能:平展.投影.配置验证.列表和数组.嵌套映射.自定义类型转换程序.自定义值转换程序 .自定义值格式程序 .Null值替换 AutoMa…
大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cookie中. 现在到了ASP.NET CORE的时代,但是ASP.NET CORE中没有FormsAuthentication这个东西,那么怎么做身份认证呢?答案是ASP.NET CORE已经为我们内置了Cookie身份认证的功能,而且使用起来非常方便,注意本文是基于ASP.NET CORE 2.0版本…
系列回顾 <ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存> <ASP.NET Core 中的SEO优化(2):中间件中渲染Razor视图> <ASP.NET Core 中的SEO优化(3):自定义路由匹配和生成> 背景 切换主题,是博客.CMS等系统的必备功能,一般来说,有三种切换主题的需求. 在管理后台上传主题包,并选择主题 前端自动按照频道.栏目等切换模版 用户在前端切换主题,并记录用户的选择 这三种需求,其实核心原理都是一样,就是制定…
前言 前两篇文章主要总结了CMS系统两个技术点在ASP.NET Core中的应用: <ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存> <ASP.NET Core 中的SEO优化(2):中间件中渲染Razor视图> 而本篇文章,继续介绍另一个技术点:自定义路由匹配和生成. 背景 在MVC5时代,默认的路由可能就是简单的约定/{controller}/{action}/{id},第一节对应控制器(Controller)名,第二节对应操作(Action)名,…
上一篇文章<ASP.NET Core中使用默认MVC路由>提到了如何使用默认的MVC路由配置,通过这个配置,我们就可以把请求路由到Controller和Action,通常情况下我们使用默认的路由器就可以了. 但是有些情况下,我们需要创建自己的路由规则,不是简单的修改MVC路由模板这么简单,比如我们需要针对一些特定的URL做特殊处理,这种情况通常是我们需要兼容一些旧的URL,但是升级之后总不能不管吧,要们做跳转或者给用户一个友好提示等等.如果旧的URL是MVC的那种格式Controller/Ac…
一.前言 上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完美,之后我经过自己的学习查阅并阅读了相关源代码,发现 IdentityServer4 可以实现自定义GrantType 授权方式. 声明:看这篇文章时如果你没有阅读我上一篇 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,那请先移步看上面的文章,再来看这篇文章…
之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独立的项目中发布成NuGet包,项目中使用时只需安装NuGet包,然后在Startup的Configure()方法中添加如下的一行代码. app.UseCustomErrorPages(); CustomErrorPagesMiddleware的实现代码如下: public class CustomE…