程式設計師的自我救贖 7 2 許可權系統實際應用

2022-01-12 05:12:27 字數 2574 閱讀 3255

《前言》

(一) winner2.0 框架基礎分析

(二)plsql報表系統

(三)sso單點登入

(四) 簡訊中心與訊息中心

(五)錢包系統

(六)gpu支付中心

(七)許可權系統

(八)監控系統

(九)會員中心

(十一)winner前端框架與rpc介面規範講解

(十二)上層應用案例

(十三)總結

《許可權系統實際應用》

講到許可權系統的應用,我們需要回過頭來看看《sso及應用案例》,之前講sso的應用中有講到特性類[authlogin] 和 [authright]。

關於[authlogin] 前面已經講過了,其實 [authright]的應用和[authlogin] 是一樣的,我們以特性類的方式表示哪個介面需要驗證許可權(controller)。

用法也很簡單:

關於authright 的具體實現在winner.framework.mvc中,可以看這篇文章了解這一塊:核心框架講解(mvc)。

具體實現其實也很簡單:

using

system;

using

system.collections.generic;

using

system.dynamic;

using

system.linq;

using

system.web;

using

system.web.mvc;

using

system.web.routing;

using

winner.framework.mvc.globalcontext;

using

winner.framework.utils.model;

namespace

winner.framework.mvc

//////

許可權驗證,繼承登陸驗證

/// ///

protected

override

bool

onauthorizationing(authorizationcontext context)

//2.忽略許可權檢查

if(globalconfig.ignorecheckright)

//3.如果是ajax請求則不檢查許可權

if (base.contextprovider.isajaxrequest &&globalconfig.ignoreajaxrequestcheckright)

//4.獲取路徑,如:/區域/控制器/動作/

string url = string

.empty;

if (!string

.isnullorempty(contextprovider.area))

url += string.format("

///"

, contextprovider.controller, contextprovider.action);

//5.判斷許可權

));if (base

.contextprovider.isajaxrequest)

else

)); }

return

false

; }

return

true

; }}}

[authlogin] 和 [authright] 的區別在於 [authlogin]只驗證是否登入,登入的都可以瀏覽和操作, [authright] 則要驗證許可權系統是否有這個許可權。

有打 [authright]特性類,我們就通過wcf或者webservice去請求"許可權系統" 去查詢是否該使用者有本頁面許可權,如果沒有返回false,則跳到指定的提示頁面。

上篇文章中有講到,我們的許可權其實只控制到頁面,但是完全是可以讓許可權控制到按鈕的。如果我們在許可權系統針對功能擴充套件表,再擴充套件一張操作表,配置每個

按鈕的名稱,最後再把驗證的特性類打在控制器的方法上,這就可以講許可權控制到按鈕了。就看需要有沒有達到這種程式,公司做大了,專案參與人員增多了

還是要做到這一步的。

使用wcf來做的,也沒怎麼做的好。這邊重構許可權系統的話,我們還是希望以簡單一點的方式,比如webapi來完成介面請求。

無非就三個重點:

1,以特性類[authright]的形式來做許可權檢查

2,在winner2.0的核心框架中整合許可權驗證

3,許可權系統的控制可精細化到按鈕

另外,雖然之前也有提到過。但是我再強調一遍,許可權系統一定要有忽略許可權檢查的功能(包括忽略登入檢查)。不然開發的時候很痛苦,一來是每次除錯都要登入,

二來是開發過程中每增加乙個功能還要先去線下的許可權系統,新增許可權。

所以winner2.0在設計的時候都會有像:globalconfig.ignorecheckright。這樣的通過webconfig的可配置的檢查項。

失業程式設計師的自我救贖

王小波在 時代 裡寫道,那一天我二十一歲,在我一生的 時代。我有好多奢望。我想愛,想吃,還想在一瞬間變成天上半明半暗的雲。後來我才知道,生活就是個緩慢受錘的過程,人一天天老下去,奢望也一天天消失,最後變得像挨了錘的牛一樣。可是我過二十一歲生日時沒有預見到這一點。我覺得自己會永遠生猛下去,什麼也錘不了...

程式設計師的自我救贖(前言)

程式設計師的自我救贖 前言 記得第一次登陸的時候,在個人資料裡寫近期願望是當上專案經理。轉眼間7年過去了,我也當了四年多專案經理。驀然回首之間,也不再糾結被別人叫程式設計師還是叫軟體工程師。其實在當專案經理的4年裡,前兩年確實很忙。到第二年的時候,我開始不再碰 恰好微軟在.net這一塊也開始流行 使...

程式設計師的自我救贖 2 1 報表系統專案分析

前言 一 winner2.0 框架基礎分析 二 plsql報表系統 三 sso單點登入 四 簡訊中心與訊息中心 五 錢包系統 六 gpu支付中心 七 許可權系統 八 監控系統 九 會員中心 十一 winner前端框架與rpc介面規範講解 十二 上層應用案例 十三 總結 報表系統專案分析 報表系統 顧...