2014-10-28 2 views
1

저는 컨트롤러 동작을 보호하기 위해 유창한 보안 설정 (및 작동)을하고 Castle Windsor를 사용하여 모든 것을 해결했습니다 (다운로드 할 수있는 castlewindsor-fluentsecurity 프로젝트에 표시된 것처럼). 이제 Active Directory에서 쿼리를 실행하는 사용자 지정 정책을 만듭니다. ISecurityPolicy를 구현하는 테스트 정책을 만들었지 만 AD에 액세스하기위한 인터페이스를 주입해야하므로 기본 생성자가 없습니다. 정책은 다음과 같습니다. -성 윈저에서 유창한 보안 맞춤 정책 사용하기

IQueryHandler는 다른 곳에서 사용되고 올바르게 해석됩니다.

configuration.For<Areas.People.Controllers.InfoController>().AddPolicy<TestPolicy>(); 

을하지만 호출 할 때이 실패 : - - : 나는 컨트롤러에 정책을 추가 TestPolicy로드 할 수 없습니다! 정책에 빈 생성자가 있거나 IoC 컨테이너에 등록되어 있는지 확인하십시오. 이제 설명서를 살펴보면 SecurityConfigurator에 IoC를 사용하고 있다고 알려주는 단계가 빠져있는 것처럼 보입니다. 워드 프로세서는 특정 성 윈저의 예를 표시하지 않습니다하지만 난 '와 함께': -

SecurityConfigurator.Configure(configuration => configuration.ResolveServicesUsing(type => _container.ResolveAll(type).Cast<object>())); 

잘 작동하지 않습니다 그것은 때 시간의 SecurityConfig하여 SecurityConfigurator가 성 윈저 용기를 필요로 이상한 것 같다 .RegisterSecurityRules()가 호출되었습니다. Castle Windsor에서 거의 끝났습니다. 이 인스턴스에서 Fluent Security를 ​​어떻게 구성해야합니까?
을 SecurityConfigurator에서 내가 configuration.ResolveServicesUsing( type => container.ResolveAll(type).Cast<object>(), type => container.Kernel.HasComponent(type) ? container.Resolve(type) : null );

내가 아니라 실제 정책보다는 인터페이스를 추가 할 컨트롤러 정책을 변경 한 :

configuration.For<Areas.People.Controllers.InfoController>().AddPolicy<ITestPolicy>(); 


-

답변

1

OK 잘 나는 마지막으로 작업을 얻었다 인터페이스는 ISecurityPolicy를 구현합니다.


그리고는 다음 인터페이스는 성과 함께 유선 수 있습니다



container.Register(Component.For<ITestPolicy>().ImplementedBy<TestPolicy>()); 
나는 당신이 그것을 할 수 있도록 정책 인터페이스를 사용할 필요가 있다는 말과 함께 할 수 유창함 문서에서 custom policy examples 생각 CastleWindsor에 의해 해결 ... (내가 잘못 사용하지 않는 한!)