ホームページ > バックエンド開発 > 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) を選択するようにします。

Interfaces

これを実現するには、次のように定義します。特定の認証方法がサポートされているかを追跡する AppliesTo メソッドを備えた IAuthenticate インターフェイス

public interface IAuthenticate{
    bool Login(string user, string pass);
    bool AppliesTo(string providerName);
}
ログイン後にコピー

認証プロバイダー

各認証プロバイダー (Twitter および Facebook) に対して、IAuthenticate インターフェイスを実装し、AppliesTo メソッドをオーバーライドして、それが処理するかどうかを指定します。指定された認証method.

public class TwitterAuth : IAuthenticate {
    ...
    bool AppliesTo(string providerName) {
        // Check if this class name matches the provider name
    }
}
ログイン後にコピー

Strategy

認証を実行するための中心点として機能する IAuthenticateStrategy インターフェイスを作成します。この戦略には、providerName に基づいて適切なプロバイダーを選択するメソッドが含まれています。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート