zoukankan      html  css  js  c++  java
  • kbmmw 中使用带验证的REST 服务

    前面介绍的rest 服务,虽然很方便,但是存在任何人都可以访问的安全问题。

    今天说一下,如何在kbmmw 中使用带验证的REST 服务?

    首先我们在工程中放一个 认证控件TkbmMWAuthorizationManager。

    如图:

     设置kbmmwserver 的认证属性

     初始化 authmgr

    AuthMgr.AddRole('AdminRole');

    然后设置 验证 代码

    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;

    在服务定义里面加上 认证 要求

    [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;

    运行程序

     输入用户名和密码,点击登录

     

     可以正常运行了。

  • 相关阅读:
    【BP算法】
    【C++问题整理】
    【最大回文长度】
    【连通区域个数】
    Redis的复制(Master/Slave)、主从复制、读写分离 (下)
    Redis的复制(Master/Slave)、主从复制、读写分离
    Redis发布订阅
    Redis事务
    Redis持久化
    Redis配置文件
  • 原文地址:https://www.cnblogs.com/xalion/p/11602523.html
Copyright © 2011-2022 走看看