これが私のシナリオです:
GenericPrincipal に渡すカスタム IIdentity を正常に作成しました。コントローラーでその IIdentity にアクセスするときは、カスタム プロパティを使用するために IIdentity をキャストする必要があります。例:
public ActionResult Test()
{
MyCustomIdentity identity = (MyCustomIdentity)User.Identity;
int userID = identity.UserID;
...etc...
}
ほとんどすべてのアクションに対してこのキャストを行う必要があるため、この機能を ActionFilterAttribute にラップしたいと考えています。コンテキストがまだ初期化されていないため、コントローラーのコンストラクターでは実行できません。私の考えでは、ActionFilterAttribute に、各アクション メソッドで使用できるコントローラーのプライベート プロパティを設定させることです。例:
public class TestController : Controller
{
private MyCustomIdentity identity;
[CastCustomIdentity]
public ActionResult()
{
int userID = identity.UserID;
...etc...
}
}
質問: これはどのように可能ですか? より良い解決策はありますか?属性に設定されているパブリック プロパティをコントローラーに渡す方法を見つけようとして頭を悩ませましたが、取得できません。