【转】ABP源码分析三十四:ABP.Web.Mvc

ABP.Web.Mvc模块主要完成两个任务:

第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用。

第二,一些常见的基础功能的实现。

 

AbpController:这是一个抽象基类,继承自MVC Controller,是ABP系统中所有controller的基类。如下图中,其封装了ABP核心模块中提供的大多数的功能。同时实现了一些公共的方法。它有三个派生类:AbpAppViewController,AbpScriptsController,AbpLocalizationController。

 

AbpWebViewPage<TModel> ,AbpWebViewPage:继承自MVC的WebViewPage。他们是ABP系统中所有view的基类。实现了一些通用逻辑:比如本地化。

 

ControllerConventionalRegistrar:继承自IConventionalDependencyRegister,register 所有controller的派生类。

 

AbpWebMvcModule:继承自AbpModule,完成Abp.Web.MVC模块的初始化。初始化主要干两件事:

第一件事,Register Assembly by convention,这是所有模块都要在初始化执行的动作。

第二件事,使用自定义的的WindsorControllerFactory替换MVC默认的DefaultControllerFactory,以实现Controller的依赖注入。

 

WindsorControllerFactory: 继承自DefaultControllerFactory,重写了ReleaseController和GetControllerInstance方法来管理Controller对象。

 

ErrorViewModel:封装了ErrorInfo和Exception类型的属性。

 

MvcAjaxResponse<TResult>,MvcAjaxResponse:用于封装针对ajax requests的Response信息。继承自AjaxResponse<TResult>,添加了一个TargetUrl属性,没有重写基类中的方法。

 

AbpMvcAuthorizeAttribute:实现IAbpAuthorizeAttribute接口,继承Mvc的AuthorizeAttribute,并重写AuthorizeCore方法。 提供permissions的设置。

 

 

 

 

AbpLocalizationController:继承自AbpController,添加了ChangeCulture方法用于更改语言设置。并将语言设置保存在Cookie中。

AbpAppViewController:继承自AbpController,根据viewUrl返回一个view.

AbpScriptsController:继承自AbpController,添加了GetScripts方法返回一段javascript代码,该代码中的相应的JS对象包含当前访问用户的所有Permission信息,Navigation信息,session信息,setting信息,当前MultiTenancy的配置信息,当前访问用户的Tenant的所有Feature信息。

 

ActionDescriptorHelper:返回ActionDescriptor的methodInfo

AbpJsonResult:继承自Newtonsoft的JsonResult。配置将CLR对象序列化为CamelCase的json 对象。

 

EmbeddedResourceRouteHandler : 实现了MVC的IRouteHandler的GetHttpHandler方法。 返回自定义的IHttpHandler对象EmbeddedResourceHttpHandler

EmbeddedResourceHttpHandler:实现了MVC的IHttpHandler的ProcessRequest方法。根据RouteData中pathInfo指定的文件路径,返回对应的文件。

WebResourceHelper:为嵌入型的资源文件请求创建路由规则,和指定其RouteHandler为EmbeddedResourceRouteHandler。嵌入型的资源文件是指嵌入到assembly中的JS和Css资源.

 

HtmlHelperResourceExtensions: 扩展了HtmlHelper类,添加了IncludeScript和IncludeStyle方法。这连个方法如下。有何用?主要用于防止客户端读取其缓存在本地的Js和Css文件,而这些文件在server端又存在更新的版本。

 

 

实际项目中的用法如下:

 

返回ABP源码分析系列文章目录

 

我发现在controller上面加上AbpMvcAuthorizeAttribute,再在Action上使用AbpAllowAnonymousAttribute,没有效果,一定要同时加上Mvc的AllowAnonymousAttribute才可以访问到。那么问题来了,
1.Abp是不是推荐使用在ApplicationService上面的方法做授权验证?
2.在Mvc或者WebApi上面,有什么方法可以不用同时加上Abp和Mvc的AllowAnonymous,就可以匿名访问?


官网已经在11月28日做了修正
Should check AllowAnonymousAttribute on authorization filters,请下载最新版本,谨防大家踩坑。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html盒子全部蓝色,彻底弄懂CSS盒子模式之五

三、分析实现方法1&#xff0e;从上面的截图可以看到有一标题&#xff0c;标题下面是一个列表&#xff0c;所以很容易想到用标签和无序列表来做结构&#xff0c;标题是一块有背景的矩形块&#xff0c;文字白色&#xff0c;文字在矩形块中居中对齐&#xff0c;所以给标签加个宽度…

地球化学图解系统GCDPlot 0.33

地球化学 图解 系统GCDPlot 0.33发布&#xff0c;新增了Excel 2007支持。下载 地址&#xff1a;GCDPlot下载GCDPlot 是一个进行地球化学图解、CIPW计算的 Microsoft Excel VBA 程序&#xff0c;GCDPlot 可以使用 Excel 的数据以标准的 Excel 图表格式绘制各类地球化学图解&am…

微软认证及课程简写含义

AZ开头的都是Azure MB开头的课程都是Microsoft Dynamics 365&#xff08;早期叫Microsoft Business Solution&#xff09;的课程 MS开头的课程都是Microsoft 365的课程 M365主要是还集合了win10 autopilot这些 M365是指包括windows在内得所有得Microsoft产品做一站…

浅析PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)

对于Microsoft .net PetShop程序中的购物车和订单处理模块&#xff0c;文中主要分析两种技术的应用&#xff1a; 1. Profile技术在PetShop程序中用于三处&#xff1a; 1) 购物车ShoppingCart &#xff0d;下面的例子围绕购物车流程进行 2) 收藏WishList 3) 用户信息AccountI…

html5设置视频显示第一帧,如何检测HTML5视频何时播放第一帧?

还有另一种方法可以使用currentTime并为视频更改的每个时间定义一个函数。在HTML5视频元素顶部设置div&#xff0c;并在currentTime在3到4秒之间时修改该元素。示例代码应该是这样的&#xff1a;HTML&#xff1a;Your browser does not support HTML5 video.CSS&#xff1a;#vi…

maven 公共模块依赖_「spring-boot 源码解析」spring-boot 依赖管理

问题maven 工程&#xff0c;依赖管理是非常基本又非常重要的功能&#xff0c;现在的工程越来越庞大&#xff0c;依赖越来越多&#xff0c;各种二方包、三方包太多太多&#xff0c;依赖冲突处理起来真是让人头疼&#xff0c;经常需要涉及到多个地方需要调整。微信公众号&#xf…

【转】ABP源码分析三十五:ABP中动态WebAPI原理解析

动态WebAPI应该算是ABP中最Magic的功能之一了吧。开发人员无须定义继承自ApiController的类&#xff0c;只须重用Application Service中的类就可以对外提供WebAPI的功能&#xff0c;这应该算是对DRY的最佳诠释了. 如下图所示&#xff0c;一行代码就为所有实现了IApplicationSer…

计算机科学与探索 影响因子,《计算机科学与探索》国家级计算机期刊投稿论文发表...

《计算机科学与探索》国家级计算机期刊投稿论文发表《计算机科学与探索》杂志简介-是不是正规期刊&#xff1a;《计算机科学与探索》是由中华人民共和国工业和信息化部主管、华北计算技术研究所361期刊网主办的国内外公开发行的计算机学报级高级学术期刊&#xff0c;中国计算机…

如何将SAP数据传输到其他系统(Transferring Data from SAP to Other Systems)

在sap里有GUI_DOWNLOAD 函数将sap的数据下载到客户端机器&#xff08;presentation server&#xff09;&#xff0c;而Dataset则是将数据传输到应用服务器&#xff08;Application server&#xff09;。然而在有些时候需要将数据传输到第三方其他系统(3rd Party System)&#x…

jstl处理栏目与子栏目_Detelogy智能前处理设备微展厅P2:再添新品

时隔小半年&#xff0c;新一轮Detelogy产品总览展示栏目再与大家见面。事不宜迟&#xff0c;点击视频即刻进入我们的智能前处理设备微展厅。 知乎视频​www.zhihu.com01 高效多样品前处理系统02 智能浓缩设备全系列03 智能湿法消解设备应用领域农残、兽残检测有机磷类、有机氯类…

【转】ABP源码分析三十六:ABP.Web.Api

这里的内容和ABP 动态webapi没有关系。除了动态webapi&#xff0c;ABP必然是支持使用传统的webApi。ABP.Web.Api模块中实现了一些同意的基础功能&#xff0c;以方便我们创建和使用asp.net webApi。 AbpApiController&#xff1a;这是一个抽象基类&#xff0c;继承自ApiControl…

408最后计算机网络题库,2021考研计算机统考408专业基础综合题库

**部分为历年考研真题。提供2009&#xff5e;2018年考研真题及参考答案&#xff0c;其中2009&#xff5e;2015年每道真题均提供详细答案解析&#xff0c;通过对真题的演练和分析&#xff0c;可以帮助学员牢牢抓住计算机学科专业基础综合考试的命题特点&#xff0c;提高复习效率…

Unity-Shader-渲染队列,ZTest,ZWrite

Unity-Shader-渲染队列&#xff0c;ZTest&#xff0c;ZWrite ZTest&#xff08;深度测试&#xff09;和ZWrite&#xff08;深度写入&#xff09;ZTest Less&#xff08;深度小于当前缓存则通过&#xff09;ZTest Greater&#xff08;深度大于当前缓存则通过&#xff09;ZTest L…

如何做好职业规划(乾卦)

职业一般来说会占用我们每个人生命中的大部分时间&#xff0c;而职业发展中变化莫测的因数常常令我们束手无策、捉襟见肘。在面对变化多端的情况时&#xff0c;中国人的传统智慧就发挥出最大的优势了。如何将快速变化 、不好掌控的事情处理得井井有条&#xff0c;这需要我们懂得…

850是什么意思_沃尔沃为什么不是一线豪华品牌?

1927年诞生的沃尔沃&#xff0c;它造车的历史比宝马还要略早几年。但经过近百年的发展&#xff0c;宝马品牌无论在国际上还是我们国内&#xff0c;以销量还是品牌含金量来看&#xff0c;都是众所公认的豪华品牌第一阵营成员&#xff08;奔驰、宝马&#xff0c;奥迪&#xff09;…

【转】ABP源码分析三十七:ABP.Web.Api Script Proxy API

ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理&#xff0c;AngularJs代理以及TypeScriptor代理。这些个代理就是javascript脚本,通过这些代理可以简单的访问Dynamic webApi。 如下实例演示一个最基本的应用场景。首先通过Script Proxy Web…

repeater导出excel html,Repeater显示数据,并且导出到excel

我的数据是自己手工生产&#xff0c;然后repeater绑定&#xff0c;最后导出excel&#xff0c;但出现问题&#xff0c;谁可以给个例子什么的没有。关键代码如下&#xff1a;protected void LinkButton1_Click(object sender, EventArgs e){string time DateTime.Now.ToString(&…

重新学.Net[一]——.Net的组成

.Net是一个广义的名词。它是一个平台或说是战略。在.Net诞生之初&#xff0c;微软在其一系列产品中都冠以.Net的标签。这也给很多人带来疑惑和不解&#xff0c;到底.Net中具体包含什么&#xff1f;这个问题不仅是我有&#xff0c;我想&#xff0c;甚至微软本身以及一些专家也会…

word2003如何设置护眼模式_手机屏幕的护眼模式是如何保护你的眼睛?

公司业务包括&#xff1a;二手机回收&#xff0c;二手机销售&#xff0c;配件批发&#xff0c;以及手机维修等业务&#xff0c;目前公司业务覆盖山西全境以及周边省市&#xff0c;在同行业有较高知名度。 随着智能手机的普及&#xff0c;大多数人也逐渐开始沉迷于每天的刷手…

WinCE系统的编译过程

作者&#xff1a;ARM-WinCE 在WinCE系统中&#xff0c;当我们完成了相关的开发和系统定制工作以后&#xff0c;会编译WinCE系统&#xff0c;最后生成NK.bin和NK.nb0。我现在用WinCE6.0在自己的PC上面编译一次用时19分16秒(有一天无聊&#xff0c;就测了一下)。下面介绍一下WinC…