前面介绍的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<>'' 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;

运行程序

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

可以正常运行了。

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

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

    我们有一个自己编写的Windows服务,我们希望该服务在启动时可以根据用户输入的参数实现不同的功能. 要实现这样的需求并不是很难,下面这个例子我用来示范如何编写该服务 using System; us ...

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

    从去年开始,kbmmw 慢慢增加内涵,除了完善各种服务外,陆续增加和扩展了作为一个中间件必须有的功能, 例如,权限管理.日志系统.调度系统.内存调试等功能. 今天给大家介绍一下kbmmw 的调度事件, ...

  3. Java中的数据验证

    原文链接:https://www.cuba-platform.com/blog/2018-10-09/945 翻译:CUBA China CUBA-Platform 官网 : https://www. ...

  4. OpenWrt中开启usb存储和samba服务

    在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wik ...

  5. 用Retrofit发送请求中添加身份验证

    用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...

  6. 防御CSRF的方法有哪些(一) HTTP 头中自定义属性并验证 CSRF跨站域请求伪造攻击

    CSRF (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下 ...

  7. KBMMW 中 IOS IPv6 的解决

    自从今年苹果强制新上架的APP 必须支持Ipv6,很多原来需要网络支持的APP 就没法上架了. 别的我们就不说了,先说说kbmmw 中,如何解决这个问题. 要测试你的app 是否支持ipv6, 首先要 ...

  8. 珍惜每一滴水(kbmmw 中的内存调试)

    作为一个服务器端的应用,最基本的要求就是稳定,当然要做一个稳定的服务器端,需要涉及到很多方面, 内存泄露就是稳定的一个致命杀手,因为服务器的物理内存是有限的,即使一个功能有很小的内存泄露,经过 长时间 ...

  9. Azure Service Bus 中的身份验证方式 Shared Access Signature

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. 2.8/4/6/8mm/12mm焦距的镜头分别能监控多大范围?

    2.8/4/6/8mm/12mm焦距的镜头分别能监控多大范围? 相关介绍 一.焦距和监控距离的关系 我司IPC镜头焦距有2.8/4mm/6mm/8mm等多种选择,可以满足室内外各种环境的拍摄需求.IP ...

  2. A Deep Dive into PL/v8

    Back in August, Compose.io announced the addition of JavaScript as an internal language for all new ...

  3. mysql where/having

    select * from t1 where id<5;select * from t1 where id<5; where 从t1中筛选内容 而having从*中筛选内容

  4. Codeforces886(Technocup2018) F Symmetric Projections

    Codeforces886(Technocup2018) F Symmetric Projections You are given a set of n points on the plane. A ...

  5. 洛谷 P1443

    P1443 所属知识点:BFS 传送门 题意 : 给你一个矩阵和一匹马一开始的位置.然后问你在这个矩阵里边跳到每一个点需要多少步. 思路: 因为一匹马从一个点可以跳到的位置如下图: 画的不好请见谅.. ...

  6. Linux 进程树查看工具 pstree

    pstree 是 Linux 下的一个用于展示进程树结构的工具,类似于 tree 展示目录树一样,可视化地查看进程的继承关系.pstree 工具其实是 PSmisc 工具集的成员之一,PSmisc 工 ...

  7. 解决github clone慢的问题

    github clone非常慢,解决方法,首先要有vpn 参考 https://www.zhihu.com/question/27159393 第一种方法 这种是没有vpn的方法,测试从10k到 几十 ...

  8. 记一次Pr中视频蜜汁卡顿往复和解决方法

    目录 问题 换素材的起因 灵异素材 无端联想 解决 问题 换素材的起因 本来视频剪了一晚剪完了,导出一看,好家伙,糊到上世纪.原来素材的像素大小都没法看,这视频素材我是从别人U盘拷过来的,可他竟然是用 ...

  9. Linux桌面环境

    早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...

  10. NamedParameterJdbcTemplate举例使用

    原文地址https://www.iteye.com/blog/cosmicbugs-1190279 NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以Jd ...