> 백엔드 개발 > C++ > Unity의 종속성 주입은 공급자 선택에 따라 조건부 인증을 어떻게 처리할 수 있나요?

Unity의 종속성 주입은 공급자 선택에 따라 조건부 인증을 어떻게 처리할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-29 13:40:11
원래의
590명이 탐색했습니다.

How can Unity's dependency injection handle conditional authentication based on provider selection?

Unity의 조건부 종속성 해결

이 글에서는 Unity의 조건부 종속성 해결 개념을 자세히 알아보고, 코드 샘플 제공.

조건부 해석

조건부 해석을 사용하면 특정 조건에 따라 객체를 구성할 수 있습니다. 우리의 경우 Unity가 사용자의 인증 방법에 따라 적절한 인증 공급자(Twitter 또는 Facebook)를 선택하기를 원합니다.

인터페이스

이를 달성하기 위해 다음을 정의합니다. 특정 인증 방법이 지원되는 인증 방법을 추적하는 AppliesTo 방법이 있는 IAuthenticate 인터페이스

public interface IAuthenticate{
    bool Login(string user, string pass);
    bool AppliesTo(string providerName);
}
로그인 후 복사

인증 공급자

각 인증 공급자(Twitter 및 Facebook)에 대해 IAuthenticate 인터페이스를 구현하고 AppliesTo 메서드를 재정의하여 처리 여부를 지정합니다. 지정된 인증

public class TwitterAuth : IAuthenticate {
    ...
    bool AppliesTo(string providerName) {
        // Check if this class name matches the provider name
    }
}
로그인 후 복사

전략

우리는 인증 수행의 중심점 역할을 하는 IAuthenticateStrategy 인터페이스를 만듭니다. 이 전략에는 공급자 이름을 기반으로 적절한 공급자를 선택하는 방법이 포함됩니다.

public interface IAuthenticateStrategy{
    bool Login(string providerName, string user, string pass);
}
로그인 후 복사

Unity 등록

Unity 구성에서는 인증 공급자와 전략

unityContainer.RegisterType<IAuthenticate, TwitterAuth>("twitterAuth");
unityContainer.RegisterType<IAuthenticate, FacebookAuth>("facebookAuth");
unityContainer.RegisterType<IAuthenticateStrategy, AuthenticateStrategy>(
    // Resolve authentication providers array
    new InjectionConstructor(new ResolvedArrayParameter<IAuthenticate>(
        new ResolvedParameter<IAuthenticate>("twitterAuth"),
        new ResolvedParameter<IAuthenticate>("facebookAuth")
    ))
);
로그인 후 복사

사용

인증 컨트롤러는 이제 전략 인터페이스를 사용하도록 수정되었습니다.

private readonly IAuthenticateStrategy _authenticateStrategy;

public AuthenticateController(IAuthenticateStrategy authenticateStrategy) {...}

public virtual ActionResult Twitter(string user, string pass) {...}

public virtual ActionResult Facebook(string user, string pass) {...}
로그인 후 복사

이제 로그인 특정 공급자 이름으로 작업이 호출되면 전략은 올바른 인증 공급자를 선택하고 로그인을 수행합니다.

개선된 디자인

전략 패턴은 인증 처리를 컨트롤러 로직에서 분리합니다. 이를 통해 컨트롤러 코드를 수정하지 않고도 새 인증 공급자를 추가하기만 하면 유지 관리 및 확장이 더 쉬워집니다.

위 내용은 Unity의 종속성 주입은 공급자 선택에 따라 조건부 인증을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿