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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器

發(fā)布時間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 從kbmmw 4.4 開始,增加了認(rèn)證管理器,這個比原來的簡單認(rèn)證提供了更多的功能。細(xì)化了很多權(quán)限操作。

今天對這一塊做個介紹。

? 要做一個認(rèn)證管理,大概分為以下5步:

?????? 1.? 定義你要保護(hù)的資源,一般是服務(wù)、函數(shù),當(dāng)然你只要不限麻煩,可以是任何東西;

?????? 2.? 定義使用者(用戶);

?????? 3.? 定義角色,使用者通過角色與服務(wù)器打交道;

?????? 4.? 定義角色或用戶可以訪問的資源(授權(quán));

?????? 5. 定義認(rèn)證與登錄的限制(本步不是必須的)。

一般來說,用戶是通過配置文件或數(shù)據(jù)庫來保存的,這樣可以靈活的設(shè)置用戶名與密碼,當(dāng)然也包括用戶的角色。

? 我們以以前的數(shù)據(jù)服務(wù)為例,做一個認(rèn)證管理。(本例子工作環(huán)境:win7 x64+delphi xe6+kbmmw 4.5 beta1)

首先,在主窗體放一個kbmMWAuthorizationManager1。

如圖

為了方便,設(shè)置mwaoautologin. 這樣在客戶端直接使用客戶端的用戶名與密碼登錄。

另外kbmmwserver1 要應(yīng)用這個認(rèn)證管理器

同時在注冊完服務(wù)器后,按上面的步驟定義資源及角色等。

sd:= kbmMWServer1.RegisterServicebyname('xaliondatasrv',Tquerysrv ,false);editorrole:=kbmMWAuthorizationManager1.AddRole('Editor'); // 定義一個編輯角色readerrole:=kbmMWAuthorizationManager1.AddRole('Reader'); //定義一個讀者角色adminrole:=kbmMWAuthorizationManager1.AddRole('Administrator'); //定義一個超級用戶角色adminrole.SubRoles.Add(readerrole); // 超級用戶 具有編輯與讀者的功能adminrole.SubRoles.Add(editorrole); // 編輯與讀者 是超級用戶的子角色kbmMWAuthorizationManager1.AddActor('xalion','xalion','Reader'); // 定義兩個用戶kbmMWAuthorizationManager1.AddActor('yh','yh','Administrator'); // 這個可以通過數(shù)據(jù)庫來存儲readerResources:=kbmMWAuthorizationManager1.AddResource('ReaderResources'); // 定義兩個資源editorResources:=kbmMWAuthorizationManager1.AddResource('EditorResources');kbmMWAuthorizationManager1.AddResource('xaliondatasrv.QUERY',readerResources); // 定義資源權(quán)限kbmMWAuthorizationManager1.AddResource('xaliondatasrv.DEFINITIONS',readerResources);kbmMWAuthorizationManager1.AddResource('xaliondatasrv.EXECUTE',readerResources);kbmMWAuthorizationManager1.AddResource('xaliondatasrv.INVENTORY',readerResources);kbmMWAuthorizationManager1.AddResource('xaliondatasrv.METADATA',readerResources);kbmMWAuthorizationManager1.AddResource('xaliondatasrv.RESOLVE',editorResources);kbmMWAuthorizationManager1.Grant('','Reader','ReaderResources',[mwapExecute]); // 給角色授權(quán)kbmMWAuthorizationManager1.Grant('','Editor','EditorResources',[mwapExecute]);

?

最后把數(shù)據(jù)服務(wù)設(shè)為需要認(rèn)證才能訪問。

{$IFNDEF CPP}class{$ENDIF} function Tquerysrv.GetPrefServiceName:string; beginResult:='xaliondatasrv'; end;{$IFNDEF CPP}class{$ENDIF} function Tquerysrv.GetFlags:TkbmMWServiceFlags; beginResult:=[mwsfListed,mwsfRunRequireAuth]; end;

?

服務(wù)器端就設(shè)置好了。

可以運(yùn)行,并啟動服務(wù)。

如果客戶端沒有加入認(rèn)證用戶名的話,查詢就會出錯。

表示,由于沒有認(rèn)證,無法訪問服務(wù)器資源。

因此我們需要在客戶端加入用戶信息。

?

在查詢時輸入用戶名及密碼

procedure TForm2.Button6Click(Sender: TObject); beginkbmMWSimpleClient1.Username:='xalion';kbmMWSimpleClient1.Password:='xalion';cx.query.Clear;cx.Query.Add('sp_tables');cx.Open; end

?現(xiàn)在運(yùn)行客戶端,就可以正常訪問了

?

?

繼續(xù)修改表的內(nèi)容后,然后reslove, 由于前面的角色沒權(quán)限,就會出認(rèn)證錯誤

?

現(xiàn)在只能使用有編輯權(quán)限的用戶了。

?

procedure TForm2.Button6Click(Sender: TObject); beginkbmMWSimpleClient1.Username:='yh';kbmMWSimpleClient1.Password:='yh';cx.query.Clear;cx.Query.Add('select * from test');cx.Open; end;procedure TForm2.Button7Click(Sender: TObject); begincx.Resolve;showmessage('修改成功'); end;

?這樣就沒問題了。

基本上就完成了認(rèn)證管理。

?

如果想了解認(rèn)證的過程,可以在

里面設(shè)置一下,就可以顯示一下的認(rèn)證過程。

?

GetAuthorization: Attempt authorization for: Actor=YH , Role=ADMINISTRATOR, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=<all>, Role=ADMINISTRATOR, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=<all>, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=<all>, Role=<all>, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=ADMINISTRATOR, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=<all>, Role=ADMINISTRATOR, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=YH , Role=<all>, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=<all>, Role=<all>, Resource=EDITORRESOURCES GetAuthorization: Attempting subrole authorization for: Actor=YH , Role=ADMINISTRATOR, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=READER, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=<all>, Role=READER, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=<all>, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=<all>, Role=<all>, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=READER, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=<all>, Role=READER, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=YH , Role=<all>, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=<all>, Role=<all>, Resource=EDITORRESOURCES GetAuthorization: Unauthorized Actor=YH, Role=READER, Resource=xaliondatasrv.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=EDITOR, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=<all>, Role=EDITOR, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=<all>, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=<all>, Role=<all>, Resource=XALIONDATASRV.RESOLVE GetAuthorization: Attempt authorization for: Actor=YH , Role=EDITOR, Resource=EDITORRESOURCES GetAuthorization: Attempt authorization for: Actor=<all>, Role=EDITOR, Resource=EDITORRESOURCES

?

?

kbmmw 還提供了自定義的登錄及退出方式,大家可以根據(jù)實際情況,自己操作。

總之,有了這個認(rèn)證管理器后,服務(wù)器的安全性進(jìn)一步加強(qiáng)。

另外也可以利用這個,實現(xiàn)當(dāng)前客戶端的訪問情況。

轉(zhuǎn)載于:https://www.cnblogs.com/xalion/p/3738603.html

總結(jié)

以上是生活随笔為你收集整理的使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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