前面介紹的rest 服務,雖然很方便,可是存在任何人均可以訪問的安全問題。數據庫
今天說一下,如何在kbmmw 中使用帶驗證的REST 服務?安全
首先咱們在工程中放一個 認證控件TkbmMWAuthorizationManager。spa
如圖:rest
設置kbmmwserver 的認證屬性code
初始化 authmgr server
AuthMgr.AddRole('AdminRole');
而後設置 驗證 代碼blog
procedure Tdmf.AuthMgrLogin(Sender: TObject; const AActorName, ARoleName: string; var APassPhrase: string; var AActor: TkbmMWAuthorizationActor; var ARole: TkbmMWAuthorizationRole; var AMessage: string); begin //建議使用數據庫保存用戶名和密碼, 密碼不要用明碼 if AActorName<>'xalion' then begin AMessage:='用戶或密碼不正確,請檢查'; exit; end; if APassPhrase<>'123456' then begin AMessage:='用戶或密碼不正確,請檢查'; exit; end; //檢查角色是否認義? ARole:=AuthMgr.Roles.Get('AdminRole'); if ARole=nil then AMessage:='角色不支持' else begin //檢查使用者是否存在,若是不存在則創建一個使用者 AActor:=AuthMgr.GetActor(AActorName); if AActor=nil then AActor:=AuthMgr.AddActor(AActorName,APassPhrase,ARoleName); AMessage:='用戶正確,容許登陸'; end; end;
在服務定義裏面加上 認證 要求get
[kbmMW_Method('EchoString')] // 迴應輸入的串 [kbmMW_Rest('method:get, path: ["echostring/{AString}","myechostring/{AString}" ]')] [kbmMW_Auth('role:[AdminRole], grant:true')] function EchoString([kbmMW_Rest('value: "{AString}"')] const AString:string):string;
運行程序string
輸入用戶名和密碼,點擊登陸it
能夠正常運行了。