사용자가 로그인 페이지를 요청하면 LoginController가 호출되고 ninject가 컨트롤러에 적절한 저장소를 삽입합니다 (IAccountRepository). 로그인이 성공하면 저장소에서 사용자 정보를 얻은 다음 Session에 저장합니다 (AccInfo라고 말하십시오). 그러나 사용자가 유효한 인증 쿠키를 가지고있는 경우 내 쿠키가 내 사이트로 돌아 오면 세션에 AccInfo가 없지만 다른 컨트롤러 (IAccountRepository가 처음부터 주입되어 있지 않음)에서 사용하려고합니다. 지금 어떻게해야합니까? db에서 정보를 얻기 위해 구체적인 객체 (AccountRepository 인스턴스를 보자)를 호출하고 싶지는 않지만 여전히이 상황에서 DI를 사용하려고합니다.DI를 사용하여 세션에 데이터를 제공하는 적절한 저장소를 얻습니다.
0
A
답변
0
아마 세션에 AccInfo를 저장하면 안됩니까? userId 또는 somesuch를 저장 한 다음 항상 저장소를 삽입하고 userId를 사용하여 필요한 항목을 검색하십시오.
DB 액세스를 최소화하려면 저장소에서 캐싱을 사용하십시오.
관련 문제
- 1. Pentaho DI를 사용하여 여러 데이터 스트림 결합하기
- 2. SQLite 저장소를 사용하여 핵심 데이터를 가져온 속성
- 3. 세션에 데이터를 한 번만로드하십시오.
- 4. ASP.NET의 SVN 저장소를 쿼리하여 업데이트 내역을 얻습니다.
- 5. Geolocation 관련 데이터를 제공하는 시스템
- 6. PHP 세션에 어떤 데이터를 저장해야합니까?
- 7. yii의 배열을 사용하여 db로부터 데이터를 얻습니다.
- 8. 로컬 Mercurial 저장소를 제공하는 방법은 무엇입니까?
- 9. mvc4 특정 데이터를 세션에 추가하십시오.
- 10. 세션에 데이터를 저장하는 방법 CodeIgniter
- 11. 데이터베이스의 데이터를 MVC의 세션에 넣습니다.
- 12. PHP - 세션에 어떤 데이터를 포함시켜야합니까?
- 13. 세션에 데이터를 저장할 수 없습니다.
- 14. 파이썬을 사용하여 데이터를 적절한 열로 구성하십시오.
- 15. ajax에서 적절한 상대 링크를 제공하는 방법은 무엇입니까?
- 16. Java가 HttpServletRequest에서 JSON 데이터를 얻습니다.
- 17. JSTree가 정상적인 XML 데이터를 얻습니다.
- 18. DI를 사용하여 동일한 인터페이스의 여러 구현을 전달
- 19. DI를 사용하여 NLog 대상에서 속성 설정
- 20. Talend DI를 사용하여 전체 디렉토리 구조 만들기
- 21. 안드로이드는 목록에있는 테이블에서 데이터를 얻습니다.
- 22. DI를 사용하여 적절한 도메인 개체를 인스턴스화하기 위해 DTO에서 유형 판별 자 필드를 어떻게 사용합니까?
- 23. 적절한 인코딩 데이터를 urlencode
- 24. DI를 사용하여 2 개의 숫자를 사용하여 계산하기위한 새로운 방정식을 추가하십시오.
- 25. jQuery는 값을 기반으로 데이터를 얻습니다.
- 26. WinRT에서 DI를 사용하는 방법
- 27. DI를 가진 Quartz.Net 등록 작업
- 28. UITableView - 도청했을 때 데이터를 얻습니다.
- 29. Laravel은 많은 관계에서 데이터를 얻습니다.
- 30. 하나의 세션에 대한 데이터를 저장하는 변수
감사합니다. 그래서 모든 컨트롤러에 IAccountRepository를 주입해야합니까? 그리고 내 저장소에 캐싱에 대한 세부 정보를 줄 수 있습니까? –
하나의 대안은 기본 컨트롤러를 사용하고 거기에서 저장소를 'OnActionExecuting' 메소드로 해결하는 것입니다. 그런 다음 상속 클래스에서 액세스 할 수있는 인스턴스 변수에 'AccInfo'를 할당 할 수 있습니다. 캐싱에 관해서는 요구 사항과 설정에 조금 의존하지만, 간단한 옵션 인'System.Runtime.Caching.MemoryCache' 클래스를 살펴 보겠습니다. – carlpett
괜찮습니다. 고마워. –