0

ASP.NET 응용 프로그램에서 사용자 역할을 적절하게 관리하고 있는지 확실하지 않습니다. 그러한 접근법이 정확하거나 잘못되었거나 개선 될 수 있습니까? ASP.NET 웹 응용 프로그램의 Windows 인증 기반 역할 관리

모든 사용자의 예를 들어 필드가 데이터베이스에있는 사용자 테이블에 추가됩니다 (사용자 ID, 이름, 성, isAdmin) 내 응용 프로그램에서

을, 나는

Request.Servervariables.Get("LOGON_USER") 
를 사용하여 사용자 ID를 얻을

페이지를 렌더링하는 동안 SQL 쿼리를 실행하여 해당 페이지의 현재 사용자가 SQL Server에서 'isAdmin'매개 변수 = 'true'를 갖고 있는지 확인합니다. 그렇다면 예를 들어, 적절한 컨트롤을 렌더링하고 보이게 만듭니다. (예를 들어 관리자 페이지의 링크 버튼)

답변

1

올바른 방법이 아닙니다. 멤버쉽 공급자와 쉽게 통합 할 수있는 asp.net roleprovider를 사용해야합니다. 그것은 페이지 컨트롤/액세스 및 역할 공급자를 손질하기 쉽도록 매우 확장 가능하고 확장 가능합니다. 귀하의 접근 방식은 매우 엄격하며 응용 프로그램이 커지면 문제가 발생할 수 있습니다.

1

ASP.Net 역할 공급자 (사용자가 마음에 들지 않으면 기본적으로 동일한 작업을 수행하지만 사용자 요구 사항을 준수 할 수 있음)이 작업에 유용합니다. 모든 페이지의 맨 위에 SQL 쿼리를 추가하는 대신 (나중에 변경해야하는 경우 나중에 악몽이 될 수 있음)

if (RoleProvider.IsUserInRole(Request.Servervariables.Get("LOGON_USER"), "Admin") == true) 
{ 
    //populate page as admin 
} 
else 
{ 
    //populate page as not admin 
} 
관련 문제