ASP.NET MVC 4 응용 프로그램을 개발 중입니다. userMenus
내가 정적 변수는 사용자 로그인 여부를 확인하는 것을 사용정적 변수 대체
public class MenuCL
{
public static List<UserMenu> userMenus = new List<UserMenu>(); // the static variable
}
public class UserMenu
{
public decimal MenuID { get; set; }
public string MenuName { get; set; }
public string Controller { get; set; }
public bool Permission { get; set; }
}
.에 때마다 사용자가 로그인을로드 정적 변수 사용자 정의 필터를 허가에서 메뉴/컨트롤러에 권한이 있습니다.
단일 사용자가 로그인했을 때 제대로 작동하지만 두 명 이상의 사용자가 로그인 한 경우 모두 엉망입니다. 오류 페이지 ("이 페이지에 대한 액세스 권한이 없습니다")는 다음과 같습니다. 메뉴/컨트롤러에 대한 권한이있는 사용자에게 표시됩니다.
만 지금은 내가이 글을 읽을 후에는, 모든 문제의 원인이되는 정적 변수의 실현 :The static variables will be shared between requests. Moreover they will be initialized when application starts, so if the AppDomain, thus application gets restarted, their values will be reinitialized.
비 정적으로 설정 하시겠습니까? 왜 그것은 처음부터 정적일까요? – nvoigt
@nvoigt 사용자가 컨트롤러/메뉴에 대한 권한을 가지고 있는지 확인하기 위해 정적 변수를 사용합니다. 따라서 사용자가 로그 아웃 할 때까지 'userMenus'가 필요하므로 컨트롤러에 요청이있을 때마다 필자의 승인 필터를 체크인 할 수 있습니다. –