정상입니다. 그러나 사이트가 성장할 때 성능 문제가 될 수 있습니다.
사용 권한은 사용자의 평생 동안 전혀 변경되지 않습니다. 대다수의 사용자는 기본 권한 집합을 갖게되며 (상대적으로) 적은 수만 "관리자"또는 "중재자"등의 역할을 갖습니다. 사이트가 커지면 특히 동일한 데이터를 반복해서 쿼리 할 때 사용 권한에 대해 데이터베이스를 쿼리하는 데 비용이 많이 듭니다. 페이지를 렌더링 할 때마다 일부 권한을 확인하는 것이 좋습니다. 사용자가 "삭제"버튼을 볼 권한이 있습니까? 관리자 메뉴를 볼 수 있습니까? 포럼이나 블로그 게시물 인 경우 포스터의 IP 주소를 볼 수 있습니까? 이런 종류의 일은 각 페이지 렌더링에서 권한을 여러 번 확인해야하며 실제로 DB 쿼리를 통해이를 수행하고 싶지는 않습니다.
적절한 해결책은 사용 권한을 캐시하는 것입니다. 다음을 고려하십시오 :
사용자가 로그인하면 사용자가 가지고있는 모든 권한을 쿼리하고 웹 서버의 메모리에 캐시합니다. 웹 서버가 여러 개인 경우 캐시를 동기화하거나 특정 서버에 해당 사용자의 메모리가 없다면 각 개별 서버에서 사용자 권한을 쿼리해야합니다. 이는 사용자가 해당 서버에 요청할 때 필요에 따라 발생합니다.
이제 DB를 전혀 쿼리 할 필요가 없습니다. 모든 권한 검사는 메모리에서 이루어 지므로 훨씬 빠르게 작동하고 DB 만 남겨 둡니다. 사용자의 권한을 변경하면 당연히 모든 웹 서버 캐시를 동기화해야하지만, 거의 발생하지 않는 것이 성능에 영향을 미치지 않기 때문입니다.
캐시를 지우려면 어느 정도 시간이 걸릴 것입니다. 서버의 RAM 용량 한계가 있습니다. 이 단계에서 잠시 전에 마지막으로 활동 중이며 더 이상 사용자 사이트를 탐색하지 않은 사용자의 캐시 된 권한을 삭제할 수 있습니다. 여전히 존재하더라도 다음 사용 권한에서 사용 권한이 다시로드됩니다.
또는 [ASP 보안 키트] (http://ASPSecurityKit.net)와 같이 성능이 뛰어나지 만 권한이 매우 제한된 시스템에서 자유롭게 사용할 수 있습니다. –
@VarunK 절대 들어 본 적이 없으며 블로그 나 기사를 찾을 수도 없습니다. 나는 정말로 시험에 들지 않은 새로운 도서관이라고 생각하니? – Artless