kbmmw 中使用帶驗證的REST 服務

前面介紹的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

 

 

 

 能夠正常運行了。

相關文章
相關標籤/搜索