Hyperlambda 和 SQL 中的行级安全性

Hyperlambda 和 SQL 中的行级安全性是生成 CRUD 后端时的声明性功能。一个简单的下拉列表,就完成了!

我们一直在Hyperlambda中拥有行级安全性。但是,截至今天,Hyperlambda 和 SQL 中的行级安全性在生成CRUD 后端时是一项声明性功能。看下面的截图就明白了。

以上是我使用 SQL Studio 添加到 Aista CRM 插件的简单表格。这个想法是有一个表,每个用户都可以在其中存储笔记以备后用。“所有者”字段是特定记录所属的注释的用户名。任何用户都不应有权访问其他用户的笔记。这个想法被称为“行级安全”如果您在 SQL Studio 中重现上述数据库表,然后转到 CRUD 生成器,并选择您的数据库和表,如果您展开“所有者”列,您将看到类似的内容。

上面的下拉列表允许您将您的字段“锁定”到经过身份验证的用户的用户名。此功能将自动生成确保所有 CRUD 操作的行级安全所需的所有代码。创建记录将自动“注入”用户名。读取只会返回属于用户的记录。更新将只允许更新属于用户的记录。并删除直到只删除属于用户的记录。

这是一个非常有用的功能,CRUD 生成器会自动为您处理所有事情。您无需编码。

它是如何工作的?

我之前一定已经说过一百万次了,但是如果没有元编程语言,就不可能创建类似于我们的 CRUD 生成器的东西。我之所以重复这一点,是因为人们在看到 Aista Magic Cloud 时问我的第一个问题是;“你为什么不使用 PHP 或 Python?为什么会有这个‘Hyperlambda’的东西?”

我的答案总是一样的;“没有元编程语言是不可能的。据我所知,Hyperlambda 是现存唯一的现代元编程语言。”

原因是您在上面的屏幕截图中看到的小下拉列表实际上会将 Hyperlambda 代码“动态注入”到“Hyperlambda 模板”中。只有当您可以像对待数据一样对待代码时,这才是可能的。暗示您允许从语义上查询代码,以了解它是如何工作的。此过程类似于您在将 HTML 元素注入 DOM 时所遵循的过程。HTML 是一种“语义”语言,这意味着它不会发生“编译”。从根本上说,HTML 只是一个树结构。Hyperlambda 与 HTML 共享这个特性,它只是一棵树!

这允许 CRUD 生成器和其他记录概念在语义上检查 Hyperlambda,并根据您的说明在正确的位置动态注入额外的片段。

在 THEORY 中甚至无法使用 PHP、Python、C# 或 Java 做到这一点!

下面是在 SQL Studio 中重新创建上表所需的 SQL 供您参考。


CREATE TABLE notes(
note_id integer not null primary key autoincrement,
content text not null,
owner text not null
);


发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章