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

    运行程序

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

     

     可以正常运行了。

  • 相关阅读:
    计算在线人数
    微软MSMQ消息件研究(一)
    jQuery循序渐进2
    单点登陆的ASP.NET应用程序设计[zt]
    利用SQL2005的缓存依赖
    .Net 操作MSMQ
    GridView中数据格式化
    TcpListener/TcpClient/UdpClient 的区别及联系
    微软消息件MSMQ研究DEMO(二)
    Nhibernate(1)
  • 原文地址:https://www.cnblogs.com/xalion/p/11602523.html
Copyright © 2020-2023  润新知