MenuHelperModel
에서 빌드 메뉴를 시도하면 MvcSiteMap이 모두 컨트롤러를 구성합니다. 그것은 큰 성과를 낼 수 있습니다. 컨트롤러의 보안을 설정하기 위해 [Authorize]
에 의존 할 때 유일한 방법입니까?MvcSiteMap은 모든 컨트롤러가 인스턴스화되도록합니다
1
A
답변
2
우선, constructors should be simple. 각 요청에서 컨트롤러를 작성하면 애플리케이션 속도가 느려지므로 생성자가 너무 많은 작업을하고 있다는 신호입니다. MVC 프레임 워크는 요청 당 하나의 인스턴스를 생성하므로 어쨌든 MvcSiteMapProvider
이상으로 느려질 수 있습니다.
즉, 다른 옵션이 있습니다. roles 속성/Roles 속성을 사용하여 AuthorizeAttribute에서와 동일한 역할을 설정할 수 있습니다. 이 작업의 단점은 다음과 같습니다.
- 전체 보안 체계를 복제해야합니다.
- 사용자 정의 AuthorizeAttribute를 사용할 수 없습니다.
리플렉션을 사용하여 응용 프로그램을 검색하는 동적 노드 공급자를 만들어서 첫 번째 제한을 해결하고 해당 노드의 역할로 AuthorizeAttribute에서 역할을 설정할 수 있습니다. 이 코드는 캐시 타임 아웃마다 한 번만 실행되므로 그 시점에서 일부 Reflection을 사용하면 성능 문제가 발생하지 않을 가능성이 높습니다.
관련 문제
- 1. 내가 컨트롤러가 "까지 모든 방법"
- 2. AngularJs 컨트롤러가 템플릿의 모든 html 요소를 추가합니다.
- 3. 모든 컨트롤러가 AsyncController에서 상속받는 것이 좋습니다.
- 4. 내가 갖고있는 모든 JSP 페이지마다 컨트롤러가 있어야합니까?
- 5. 모든 컨트롤러가 $ scope에 데이터를 넣지는 않습니다.
- 6. Laravel 컨트롤러가 mysql에 모든 데이터를 추가하지 않음
- 7. 모든 컨트롤러가 싱글 톤일 경우 HTTPSession이 생성되는시기는
- 8. 모든 컨트롤러가 세션없이 작동하도록하는 글로벌 스위치
- 9. 모든 UIView에 컨트롤러가 필요하거나 컨트롤러가 여러 뷰를 제어 할 수 있습니까?
- 10. 컨트롤러가 JSON은
- 11. 내가 컨트롤러가
- 12. 는 컨트롤러가
- 13. 나는이 컨트롤러가
- 14. mainStoryboard의보기 컨트롤러가 너무 작음
- 15. CakePHP에서 모든 컨트롤러가 사용할 수있는 테이블의 데이터를 만드는 방법
- 16. iOS : 모든 컨트롤러가 사용할 응용 프로그램을 시작할 때 객체 초기화
- 17. 기본 RESTful 컨트롤러가 Laravel의 다른 모든 경로와 충돌합니다.
- 18. 내 컨트롤러가 포함 된 모든 자바 스크립트 파일을 어떻게로드해야합니까?
- 19. BaseController를 가지고 모든 컨트롤러가 그 클래스를 확장하도록하는 것이 좋습니다.
- 20. 모든 뷰 컨트롤러가 액세스 할 수있는 메서드를 만드는 방법은 무엇입니까?
- 21. 모든 fmxl 파일 (장면)에 대해 컨트롤러가 필요합니까?
- 22. ngAnimateSwap에 자신의 컨트롤러가있는 지시문은 모든 '스왑'에서 새 컨트롤러가 초기화되도록합니다.
- 23. 내 모든 컨트롤러가 symfony2의 특정 파일을 항상 포함하도록하는 방법이 있습니까
- 24. 컨트롤러가 호출 될 때마다 codeigniter 세션을 초기화하면 모든 세트가 백업됩니까?
- 25. Spring Context에서 모든 컨트롤러가 준비되면 이벤트를 트리거하는 방법은 무엇입니까?
- 26. 바 버튼 항목이있는 모든 후속보기 컨트롤러에 추가 탐색 컨트롤러가 필요합니까?
- 27. 모든 것이 제대로 실행되고있을 때 컨트롤러가 콘솔로 인쇄되지 않는 이유
- 28. MVC 컨트롤러가 즉시 폐기됩니다.
- 29. 레일즈 컨트롤러가 작동을 멈추었습니다.
- 30. DMA 컨트롤러가 선택되면 어떻게됩니까?
> MVC 프레임 워크는 요청마다 하나의 생성자 인스턴스를 만듭니다. 요청 당 하나의 인스턴스가 요청 당 컨트롤러 당 하나의 인스턴스와 같지 않지만, 귀하의 요지를 이해합니다. 내 생성자를 간단하게 만드는 것이 나의 첫 걸음이었습니다. – Leotsarev
참. 하지만 안타깝게도 마이크로 소프트는 현재 요청이 아닌 보안 점검을 위해'AuthorizeAttribute'를 사용하고자하는 사람들을위한 선견지명이 없습니다. 당신은 선택의 여지가 있지만'ControllerContext' 객체를 조롱합니다 * 요청 일 것입니다. 컨트롤러 인스턴스가 필요합니다 (또는 앞에서 말한 것처럼 전체 보안 체계를 복제하십시오). – NightOwl888