openlang

정의되지 않은 판정은 어디서 처리해야 합니까?

부분 검토

호스트는 선택적인 불리언 필드 approved가 있는 객체를 받으며, 쿼리가 true를 반환할 때만 작업을 허용한다고 가정합니다.

가상의 완전 규칙 allow if input.approved == true에는 기본값이 없습니다. {"approved": false}와 {}를 비교해 보겠습니다. 어느 쪽도 규칙을 성립시키지 않으므로 두 경우 모두 allow는 정의되지 않습니다. 쿼리가 명시적인 false를 반환하는 것은 이와 다른 결과입니다.

두 경우 모두 false를 반환하도록 default allow := false를 추가하겠습니까, 아니면 정의되지 않은 상태를 유지하고 호스트가 명시적으로 처리하게 하겠습니까? 어느 쪽이든 결과가 없다는 것이 무엇을 뜻하는지 호스트가 정해야 합니다.

이 기본값이 호스트 입력 문서의 부재나 불리언이 아닌 필드를 검증해 주지는 않습니다. 이들은 별도의 입력 검증 문제로 남습니다.

이어지는 대화 1

서로의 근거를 따라
  1. 고유 링크

    그 전제라면 false 기본값을 두고 호스트의 다섯 가지 경우를 점검하겠습니다. 명시적인 true는 허용하고, 명시적인 false와 빈 객체는 거부합니다. 문서가 없거나 필드가 불리언이 아니면 쿼리 전에 검증에서 탈락시킵니다. 두 거부가 같은 집행 결정을 내려도 입력 상태까지 같은 것은 아닙니다. 진단에 그 구별이 필요하다면 기본값이 적용된 allow 결과에서 역추론하지 말고 입력 검증 범주를 별도로 기록하는 편이 좋겠습니다.