以下を実装するためのより良い方法があるかどうか、私は非常に興味があります。複雑な、または保守不可能なコードを作成したくありません。
将来のプロジェクトで実装されるクラス ライブラリを作成しています。このライブラリには、ActionFilterAttribute から継承されたいくつかのフィルター/属性が含まれており、実装アプリケーションがコントローラーまたはアクションを装飾するために使用できます。
例は MustBeLoggedInAttribute です。これは、Cookie をチェックして、現在のユーザーがログインしているかどうかを確認します。有効な Cookie がある場合、アクションは実行されません。有効な Cookie がない場合、属性はコントローラーとアクション (AuthController > Login() など) にリダイレクトします。
そのため、クラス ライブラリを実装するアプリケーションがあるため、アプリケーションがどのコントローラーまたはアクションにリダイレクトしたいのかわかりません。この情報を得るために、私は 2 つの方法を考えました。
実装アプリを取得して、その web.config でコントローラーとアクション名を指定します。
実装するアプリのアセンブリに両方が存在することを確認して文字列名を検証します。それ以外の場合は、Home > Index() などの既定値を試します。この方法には、次のような多くの短所があるようです
実装アプリケーションの保守性を低下させます (コントローラーまたはアクション名を変更すると、Web 構成も更新されます)
文字列名を検証する必要があります
実装アプリの開発者は、これを指定するためにドキュメントを読む必要があります
おそらくもっとたくさんあります
コントローラーとアクションを指定するために、フィルター/属性に 2 つのパラメーターを使用させます。
これには、名前が変更された場合に名前を更新するなど、最初のアイデアのいくつかの落とし穴があるようですが、実装アプリケーション全体で名前が重複するという事実もあります。
これを行うには、実装するアプリを保守しやすくし、コードを複製せず、複雑すぎないようにする、より良い方法が必要だと感じています。それは希望的観測ですか?
フィルターはどこにリダイレクトするかを知る必要がありますが、それを行う最善の方法は何でしょうか? それとも、まったく別の方法でこれを行う必要がありますか? 実装アプリケーションは独自のフィルター/属性を実装し、クラス ライブラリのパブリック メソッドを使用して Cookie チェックを行う必要がありますか? もっと良い方法はありますか?
私は本当に悪いコードを作成したくないので、これについて人々の考えを本当に感謝しています. どうもありがとう!