Hyperlambda 및 SQL의 행 수준 보안
위는 SQL Studio을 사용하여 Aista CRM 플러그인에 추가한 간단한 표입니다. 아이디어는 각 사용자가 나중을 위해 메모를 저장할 수 있는 단일 테이블을 갖는 것입니다. "소유자"필드는 특정 레코드가 속한 노트의 사용자 이름입니다. 어떤 사용자도 다른 사용자의 메모에 액세스할 수 없어야 합니다. 이 아이디어를 "행 수준 보안"이라고 합니다. SQL Studio에서 위의 데이터베이스 테이블을 재현한 다음 CRUD Generator로 이동하여 데이터베이스와 테이블을 선택하면 "소유자"열을 확장하면 다음과 같은 내용이 표시됩니다.
위의 드롭다운 목록을 사용하면 인증된 사용자의 사용자 이름으로 필드를 "잠글"수 있습니다. 이 기능은 모든 CRUD 작업에서 행 수준 보안을 보장하는 데 필요한 모든 코드를 자동으로 생성합니다. 레코드를 생성하면 사용자 이름이 자동으로 "주입"됩니다. 읽기는 사용자에게 속한 레코드만 반환합니다. 업데이트는 사용자에게 속한 레코드 업데이트만 허용합니다. 삭제는 사용자에게 속한 레코드만 삭제합니다.
이것은 매우 유용한 기능이며 CRUD Generator는 모든 것을 자동으로 처리합니다. 귀하의 코딩이 필요하지 않습니다.
어떻게 작동합니까?
전에도 이 말을 백만 번은 했겠지만 meta programming language 없이 우리의 CRUD Generator와 유사한 것을 만드는 것은 불가능합니다. 이것을 반복하는 이유는 사람들이 Aista Magic Cloud를 볼 때 나에게 묻는 첫 번째 질문이 있기 때문입니다. “왜 PHP나 Python을 사용하지 않았나요? 왜 'Hyperlambda'인가?”
제 대답은 항상 같습니다. “메타 프로그래밍 언어 없이는 불가능합니다. 내가 아는 한 Hyperlambda는 현존하는 유일한 최신 메타 프로그래밍 언어입니다.”
그 이유는 위의 스크린샷에서 볼 수 있는 작은 드롭다운 목록이 실제로 Hyperlambda 코드를 "Hyperlambda 템플릿"에 "동적으로 주입"하기 때문입니다. 이는 데이터를 처리하는 것과 동일한 방식으로 코드를 처리할 수 있는 경우에만 가능합니다. 작동 방식을 이해하기 위해 의미론적으로 코드를 쿼리할 수 있음을 의미합니다. 이 프로세스는 HTML 요소를 DOM에 주입할 때 따르는 것과 동일한 프로세스와 유사합니다. HTML은 "시맨틱"언어입니다. 즉, "컴파일"이 발생하지 않습니다. 기본적으로 HTML은 단순히 트리 구조입니다. Hyperlambda는 HTML과 이 특성을 공유합니다. 이는 단지 트리일 뿐입니다!
이를 통해 CRUD 생성기 및 레코드에 대한 기타 개념이 의미론적으로 Hyperlambda를 검사하고 지침에 따라 올바른 위치에 추가 스니펫을 동적으로 삽입할 수 있습니다.
Doing this with PHP, Python, C# or Java is not even possible in THEORY!
다음은 참조용으로 SQL Studio에서 위의 테이블을 다시 만드는 데 필요한 SQL입니다.
CREATE TABLE notes(
note_id integer not null primary key autoincrement,
content text not null,
owner text not null
);
Reference
이 문제에 관하여(Hyperlambda 및 SQL의 행 수준 보안), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/polterguy/row-level-security-in-hyperlambda-and-sql-52g6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)