在上一章節(jié)中,我們處理了MVC多級目錄問題,參見《二、處理MVC多級目錄問題——以ABP為基礎(chǔ)架構(gòu)的一個(gè)中等規(guī)模的OA開發(fā)日志》。從這章開始,我們將進(jìn)入正式的開發(fā)過程。首先,我們要完成系統(tǒng)的基礎(chǔ)設(shè)置模塊(在后續(xù)的功能中,需要大量使用這些基礎(chǔ)設(shè)置信息)。和一般的OA系統(tǒng)不同,在律所OA系統(tǒng)中,用戶類別管理是基礎(chǔ)模塊中非常重要、使用頻率非常高的一個(gè)基礎(chǔ)模塊。雖然此功能只是很小的一個(gè)字典項(xiàng)設(shè)置,但是其中涉及了鎖、并發(fā)處理、領(lǐng)域服務(wù)于應(yīng)用服務(wù)的劃分等繁瑣問題。
UI功能頁面介紹(因用戶功能未完成,欠缺刪除頁面)
UI方面,我們使用了Metronic+EasyUI做為主要呈現(xiàn)方式。其中我們對EasyUI做了相應(yīng)調(diào)整,已使其更加適用于Metronic風(fēng)格。其中,上圖所示的cnblogs.scss為本博客的UI風(fēng)格(仿小米風(fēng)格,未完工);color.scss為全局顏色設(shè)置;common.scss為全局公用css;easyui.custom.scss為我們對EasyUI的樣式修改;metronic.scss為我們對Metronic的樣式調(diào)整; site.scss為程序主css文件。我們在common.scss文件中,導(dǎo)入了color.scss。在site.scss文件中,導(dǎo)入了common.scss、metronic.scss和easyui.custom.scss文件。這樣在布局頁引入css文件時(shí),我們僅需要引入單個(gè)site.min.css文件即可,而不用引入一大堆css文件。我們在布局頁中,大量使用了存儲于cdn上的一些css和js文件。這些大多都是一些公用類庫,大家可根據(jù)需要自行下載。
ABP對CSRF/XSRF跨站攻擊的處理
abp通過token驗(yàn)證以解決上述攻擊問題。只要在模板文件(布局頁)中,增加@{SetAntiForgeryCookie();},即可方便在ABP內(nèi)置的ajax輔助方法中發(fā)送生成的token。但在實(shí)際使用中,我們需要做一些處理。ABP的view頁面文件繼承自View目錄下EasyFastWebViewPageBase類(該類最終繼承自AbpWebViewPage類),而SetAntiForgeryCookie()方法則是AbpWebViewPage類的內(nèi)置方法。所以,要使用SetAntiForgeryCookie()方法。我們必須要所有的布局頁全部繼承自EasyFastWebViewPageBase類。