문서 열람 페이지인지 확이하는 코드를 구현하는데
마지막에 문제가 걸리는 부분이
$oDocument->isExists() 를 만족하지만
권한이 없는 접근자의 경우 막아주지 않으면 문제가 생기는 경우 이부분까지 막아줘야 하는데요.
디버그를 찍어보니
$oDocument->grant_cache 이 정확하게 열람 권한자가 진입하면 1(true)가 찍히고
권한 없는 자가 접근해서 접근권한 없다는 메시지를 만나게 되면 값이 없어집니다.
해당 모듈의 권한까지 조회해서 비로그인인 접근자가 권한이 있는 문서인지 확인하는 것 보다 이게 효율이 더 높은지 아니면 사용하면 안되는 건지 궁금합니다.
그리고 XE에서도 가지는 값인가요?
가능하면 내부 자료 구조에 의존하지 말고 공식 제공하는 함수를 사용하시기 바랍니다. grant_cache는 $oDocument->isGranted(), $oDocument->isAccessible() 등의 함수에서 내부적으로 사용하는 변수로 기억합니다. 이름 그대로 권한과 관련된 일부 데이터를 캐싱하는 용도이지만, 모듈의 접근 권한까지 체크하지는 않을 수도 있습니다. 데이터가 캐싱되기 전에 그 변수를 사용하면 엉뚱한 값이 나올 가능성도 있고요.