나는이 레벨 내에서 다양한 수준의 사용자 권한과 개별 권한의 관리를 포함하는 웹 응용 프로그램 인벤토리 시스템을 개발 중입니다. 따라서 대부분의 관리자는 모든 권한을 갖지만 관리자를 만들어 특정 권한을 제거 할 수 있습니다. 궁극적으로 이러한 사용 권한은 MySQL 데이터베이스 내에 비트 문자열로 저장됩니다. 여기서 1은 사용 권한을, 0은 사용 권한이 없음을 의미합니다. 나는 보안을 희생시키지 않으면 서 시스템을보다 효율적으로 만드는 작업을하고있다. 사용자가 작업을 완료하려고 할 때마다 데이터베이스 검색을 실행하고 권한을 확인하는 대신, PHP 사용 권한을 서버에서 가져온 시간 스탬프와 함께 PHP 세션 변수 내에서 사용 권한을 캐시하고 싶습니다.PHP 퍼미션의 글로벌 타임 스탬프
$query_getUser = $this->User->prepare("SELECT * FROM users WHERE Email = ?");
$query_getUser->bindParam(1, $Email);
$query_getUser->execute();
$result = $query_getUser->fetchAll(PDO::FETCH_ASSOC);
$date = new DateTime();
session_start();
$_SESSION['Email'] = $Email;
$_SESSION['Password'] = $Password;
$_SESSION['Timestamp']= $date->getTimestamp();
$_SESSION['Permissions']= $result['Permissions'];
내가 만난 주요한 문제는 전역 변수를 저장할 위치입니다. 가장 안전한 장소는 무엇입니까? 본질적으로, 나는 현재의 캐시 날짜를 O (1) 시간에 비교할 수있는 어딘가에 저장하려고합니다.
또한이 방법으로 사용 권한을 구현할 때 주된 관심사가 있습니까? 사용자 권한이 자주 변경되지 않고 새로운 사용자가 아직 시스템에 추가 될 때까지 끌어 오기 권한이없는 경우 (create_user가 캐시 업데이트를 발생시키지 않지만 modify_user는 수행하지 않음) 합리적인 접근 방법입니까?
+1 구조화 된 질문 및 prepared statements. – Jonast92