2011-08-24 3 views
0

사용자가 로그인되어있는 동안 전역 변수를 설정해야합니다.이 변수에 컨트롤러와 뷰로 모두 액세스 할 수 있어야합니다.사용자가 로그인하는 동안 전역 변수를 설정하는 방법은 무엇입니까?

현재 기본 제공 MVC 멤버 자격 공급자를 사용하고 있습니다.

사용자는 어떤 식 으로든이 변수를 편집 할 수 없어야합니다.

내가 세션을 사용하여 시도했다지만 사용자가 로그인하는 동안이, 어느 시점에 만료됩니다.

다른 대안이 있습니까?

답변

0

보안이 중요하면 세션 쿠키, 암호화 된 값을 사용할 수 있습니다. 또한 세션 객체로서 사용자가 아닌 실행중인 응용 프로그램에 대해 전역 인 Application 객체를 살펴보십시오.

0

내 자신의 필요에 따라 사용 된 기술은 Controller을 상속받은 BaseController을 생성 한 다음 내 다양한 ​​컨트롤러에 상속되도록했습니다. BaseController에서는 BaseController 생성자를 통해 설정된 "전역"변수를 넣었습니다. 모든 컨트롤러 동작은이 변수에 액세스하여 필요에 따라 다른 항목 (보기, 모델)에서 사용할 수있게합니다. 그것은 내 상황에서 아주 잘 돌아갔다.

+0

흥미로운 아이디어. 글로벌하게 만드는 데 필요한 값은 데이터베이스에서 가져옵니다. 베이스 컨트롤러가 그것을 상속하는 컨트롤러를 사용해야 할 때마다 또는 세션/로그인 당 한 번만 데이터베이스에서 가져올 수 있습니까? – Nanek

+0

@Nanek -'BaseController'에서'static' 속성을 만들었다면 모든 컨트롤러가 그 값에 접근 할 수 있고, 구현에 따라 그것을 변경할 수 있다고 생각합니다 - 두 개의 브라우저를 열고 그것들을 공유하십시오. 적어도 dev 개발 환경에서는 그렇게 작동합니다. 그것은 당신이 원하는 것이 아닐 수도 있습니다. 'BaseController'의 생성자를'protected' 생성자가 아닌'static'으로 설정하는 것은 그것이 한 번 호출된다는 것을 의미합니다. 당신은 확실하게 당신이/DB에서 그것을 계속적으로 얻고 싶다면 DB를 두드리는 것을 피하기 위해 거기에 어떤 논리를 던질 수 있습니다. – itsmatt

+0

@Nanek - 당신이'protected BaseControler()'생성자를 가지고 있다면 그것은 당연히 파생 된 컨트롤러 클래스의 모든 인스턴스화에 대해 한 번 호출 될 것입니다. 이상적이지 않을 수도 있습니다. – itsmatt

관련 문제