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

 

 

 

 能够正常运行了。

相关文章
相关标签/搜索