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;

运行程序

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

可以正常运行了。

原文地址:https://www.cnblogs.com/xalion/p/11602523.html

时间: 2024-08-09 05:07:36

kbmmw 中使用带验证的REST 服务的相关文章

【转】如何在命令行脚本中启动带参数的Windows服务

我们有一个自己编写的Windows服务,我们希望该服务在启动时可以根据用户输入的参数实现不同的功能. 要实现这样的需求并不是很难,下面这个例子我用来示范如何编写该服务 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Diagnostics; 6 using System.Linq; 7 using Syste

在指定时间干,必须干(kbmmw 中的事件调度)

从去年开始,kbmmw 慢慢增加内涵,除了完善各种服务外,陆续增加和扩展了作为一个中间件必须有的功能, 例如,权限管理.日志系统.调度系统.内存调试等功能. 今天给大家介绍一下kbmmw 的调度事件,调度事件的主要目标就是”在指定时间干,必须干“,不是“爱干”,是“必须干” :). 在传统的delphi 中事件调度室通过两种方式,一种方式通过Ttimer 来实现,(我20年做的母校的食堂餐饮消费系统就是通过Ttimer来轮询 POS 机的).另外一种就是通过扩展Tthread 线程类,通过后台完

如何在.net/MVC4中自定义页面验证的前端脚本

其实是很少发技术类文章的, 只是在最近的一次项目中,由于这个位置的技术短板导致折腾好几天,而网上搜的内容又都不直接说明,所以还是决定写出来给人参考一下, 可以帮助大家省点时间. 先来看一下需求: 很是草稿的图片请别介意.需求是这样,当选中图中的下拉菜单选项为第一个时,使用文字验证,当下拉菜单选为第二个选项时,使用数字验证. 这种需求其实比较普遍,很多流程化管理的页面都会有这种需求.比如在申请证件时候可选项是护照还是身份证的时候,对填入内容的验证规则可以是不一样的. 但微软自带的model绑定规则

KBMMW 中 IOS IPv6 的解决

自从今年苹果强制新上架的APP 必须支持Ipv6,很多原来需要网络支持的APP 就没法上架了. 别的我们就不说了,先说说kbmmw 中,如何解决这个问题. 要测试你的app 是否支持ipv6, 首先要搭建IPv6 的测试环境,最简单的方法就是利用mac 来生成一个 共享的虚拟Ipv6 网络.具体搭建的方法参考此篇博文: http://www.cocoachina.com/ios/20160525/16431.html 剩下的就是在你的APP 里面,是否可以通过这个网络访问远程服务器?如果没问题,

Cisco UCS环境中CentOS带Vlan ID的网络配置指南

最近新进了一批Cisco UCS C系列服务器,经过两周的部署安装终于可以进行测试了.本文简要介绍一下cisco UCS服务器中操作系统(CentOS 6)的网络配置.可以简单的认为,本文描述的是一台物理服务器用网线将网卡连接到上层交换机的trunk模式的端口中的网络配置. 物理连接拓扑图如下所示. 顶层采用Cisco C3560物理交换机,为整个机群提供Internet连接.Vlan划分为两个,一个管理Vlan一个应用Vlan,Vlan ID分别为4和31,上联端口全部设置为trunk模式.

切记ajax中要带上AntiForgeryToken防止CSRF攻击

在程序项目中经常看到ajax post数据到服务器没有加上防伪标记,导致CSRF被攻击,下面小编通过本篇文章给大家介绍ajax中要带上AntiForgeryToken防止CSRF攻击,感兴趣的朋友一起学习吧 经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.AntiForgeryToken()会生成一对加密的字符串,分别存放在Cookies 和 in

记得ajax中要带上AntiForgeryToken防止CSRF攻击

经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.AntiForgeryToken()会生成一对加密的字符串,分别存放在Cookies 和 input 中. 我们在ajax post中也带上AntiForgeryToken @model WebApplication1.Controllers.Person @{ ViewBag.Title = "In

kbmmw 中XML 操作入门(跨平台,而且可以与JSON,YAML,BSON 直接互相转换)

delphi 很早以前就自带了xml 的操作,最新版里面有三种XML 解释器,一种是MSXML,看名字就知道 这个是微软自带的,这个据delphi 官方称是速度是最快的,但是只能在windows 上使用.另外两个是 OmniXML, ADOM, 这两个都是跨平台的.但是速度比MSXML 慢点.在delphi 10.2 里面,WINDOWS 应用默认使用MSXML, linux 应用默认使用OmniXML. 当然也可以通过强行改变 今天我们讲一下如何使用kbmmw 内置的XML 解释器处理XML

mybatis3中自带的连接池的问题

想在新项目中使用mybatis,于是这几天在看官方问题. 发现mytatis3中自带的连接池,不知道性能如何? 配置了连接池,为了验证连接池返回的连接是否是同一个连接 把poolMaximumActiveConnections这个属性配置为1,那么连接池中最多只有一个活跃连接了 然后用以下代码验证: while (true) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); if (str.equals("bye