2008-11-07 3 views
3

나는 응용 프로그램을 시작할 때 사용자 권한/역할을 얻기 위해 ActiveDirectory를 치고 응용 프로그램을 유지해야합니다.C# Windows 응용 프로그램에 정적 사용자 데이터 저장

사용자 권한을 다시 검사하기 위해 모든 양식에서 AD를 누르기를 원하지 않습니다. 따라서 사용자의 역할과 로그인 한 사용자의 다른 데이터를 응용 프로그램 내의 모든 양식에서 전 세계적으로 사용할 수있게하고 싶습니다. 그래서 필요한 곳에 기능, 버튼 등을 적절하게 숨길 수 있습니다.

뭔가 같은 :

if (UserProperties.Role == Roles.Admin) 
{ 
    btnDelete.Visible = false; 
} 

어떤 윈도우 응용 프로그램에서 정적 사용자 데이터를 저장하기위한 가장 좋은 방법은 무엇입니까? 싱글 톤 (Singleton) 또는 전역 변수와 같은 솔루션이 제대로 작동 할 수도 있지만 이러한 문제를 피하려고했습니다.

각 양식의 생성자에게 전달 된 사용자 개체가 잘못된 것입니까?

답변

2

희망이 도움,하지만 난 당신이 글로벌로을 의미하는 무언가가 있다면 생각 @ 그것을 밖으로 확인 , 전역 변수를 사용하는 것은 괜찮습니다.

글로벌 일을해서는 안되는 글로벌 일 때 전역이 좋지 않습니다. 데이터의 의도 된 용도에 대해 의미 론적으로 올바른 경우 전역은 괜찮습니다.

0

정적 데이터 (또는 싱글)을 보인다 미세이 당신이 범위에 응용 프로그램 인스턴스 (또는 응용 프로그램 도메인)에 데이터를 원하는 경우.

그러나 실제로 사용자의 보안 자격 증명을 캐싱하는 것에 대해 말하면 보안 허점에 대해 신중히 생각할 수 있습니다. 예를 들어 사용자가 며칠 동안 응용 프로그램을 실행하지 않으면 어떻게됩니까? 가장 최근의 자격 증명이 아닌 오래된 자격 증명으로 작업을 수행 할 수 있습니다. 보안에 따라 필요에 따라 자격 증명을 확인하거나 적어도 캐시 된 자격 증명을 주기적으로 만료하는 것이 좋습니다.