日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】ABP源码分析三十四:ABP.Web.Mvc 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ABP.Web.Mvc模塊主要完成兩個任務(wù):

第一,通過自定義的AbpController抽象基類封裝ABP核心模塊中的功能,以便利的方式提供給我們創(chuàng)建controller使用。

第二,一些常見的基礎(chǔ)功能的實現(xiàn)。

?

AbpController:這是一個抽象基類,繼承自MVC Controller,是ABP系統(tǒng)中所有controller的基類。如下圖中,其封裝了ABP核心模塊中提供的大多數(shù)的功能。同時實現(xiàn)了一些公共的方法。它有三個派生類:AbpAppViewController,AbpScriptsController,AbpLocalizationController。

?

AbpWebViewPage<TModel> ,AbpWebViewPage:繼承自MVC的WebViewPage。他們是ABP系統(tǒng)中所有view的基類。實現(xiàn)了一些通用邏輯:比如本地化。

?

ControllerConventionalRegistrar:繼承自IConventionalDependencyRegister,register 所有controller的派生類。

?

AbpWebMvcModule:繼承自AbpModule,完成Abp.Web.MVC模塊的初始化。初始化主要干兩件事:

第一件事,Register Assembly by convention,這是所有模塊都要在初始化執(zhí)行的動作。

第二件事,使用自定義的的WindsorControllerFactory替換MVC默認的DefaultControllerFactory,以實現(xiàn)Controller的依賴注入。

?

WindsorControllerFactory: 繼承自DefaultControllerFactory,重寫了ReleaseController和GetControllerInstance方法來管理Controller對象。

?

ErrorViewModel:封裝了ErrorInfo和Exception類型的屬性。

?

MvcAjaxResponse<TResult>,MvcAjaxResponse:用于封裝針對ajax requests的Response信息。繼承自AjaxResponse<TResult>,添加了一個TargetUrl屬性,沒有重寫基類中的方法。

?

AbpMvcAuthorizeAttribute:實現(xiàn)IAbpAuthorizeAttribute接口,繼承Mvc的AuthorizeAttribute,并重寫AuthorizeCore方法。 提供permissions的設(shè)置。

?

?

?

?

AbpLocalizationController:繼承自AbpController,添加了ChangeCulture方法用于更改語言設(shè)置。并將語言設(shè)置保存在Cookie中。

AbpAppViewController:繼承自AbpController,根據(jù)viewUrl返回一個view.

AbpScriptsController:繼承自AbpController,添加了GetScripts方法返回一段javascript代碼,該代碼中的相應(yīng)的JS對象包含當前訪問用戶的所有Permission信息,Navigation信息,session信息,setting信息,當前MultiTenancy的配置信息,當前訪問用戶的Tenant的所有Feature信息。

?

ActionDescriptorHelper:返回ActionDescriptor的methodInfo

AbpJsonResult:繼承自Newtonsoft的JsonResult。配置將CLR對象序列化為CamelCase的json 對象。

?

EmbeddedResourceRouteHandler?: 實現(xiàn)了MVC的IRouteHandler的GetHttpHandler方法。 返回自定義的IHttpHandler對象EmbeddedResourceHttpHandler

EmbeddedResourceHttpHandler:實現(xiàn)了MVC的IHttpHandler的ProcessRequest方法。根據(jù)RouteData中pathInfo指定的文件路徑,返回對應(yīng)的文件。

WebResourceHelper:為嵌入型的資源文件請求創(chuàng)建路由規(guī)則,和指定其RouteHandler為EmbeddedResourceRouteHandler。嵌入型的資源文件是指嵌入到assembly中的JS和Css資源.

?

HtmlHelperResourceExtensions: 擴展了HtmlHelper類,添加了IncludeScript和IncludeStyle方法。這連個方法如下。有何用?主要用于防止客戶端讀取其緩存在本地的Js和Css文件,而這些文件在server端又存在更新的版本。

?

?

實際項目中的用法如下:

?

返回ABP源碼分析系列文章目錄

?

我發(fā)現(xiàn)在controller上面加上AbpMvcAuthorizeAttribute,再在Action上使用AbpAllowAnonymousAttribute,沒有效果,一定要同時加上Mvc的AllowAnonymousAttribute才可以訪問到。那么問題來了,
1.Abp是不是推薦使用在ApplicationService上面的方法做授權(quán)驗證?
2.在Mvc或者WebApi上面,有什么方法可以不用同時加上Abp和Mvc的AllowAnonymous,就可以匿名訪問?


官網(wǎng)已經(jīng)在11月28日做了修正
Should check AllowAnonymousAttribute on authorization filters,請下載最新版本,謹防大家踩坑。。。

總結(jié)

以上是生活随笔為你收集整理的【转】ABP源码分析三十四:ABP.Web.Mvc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。