にユーザーIDを取得し、たとえば、ASP.NET Web APIをコントローラのコンストラクタでユーザーIDを取得するには良いアイデアです:ASP.NETのWeb APIは、コントローラのコンストラクタ
public PagesController(PageValidator pageValidator, PageMapper pageMapper, PagesManager pagesManager, UsersManager usersManager)
:base(usersManager)
{
_pageValidator = pageValidator;
_pageMapper = pageMapper;
_pagesManager = pagesManager;
if (User.Identity.IsAuthenticated)
_pagesManager.UserId = usersManager.GetByEmail(User.Identity.Name).Id;
}
はUser.Identityはこの前人口正しかった常にです電話をかける?
コントローラの作成は最新の段階ではありません。コントローラはフィルタの前に作成され、コントローラ*メソッド*は – Aleks
の後にアクセスされます。正しいです。ただし、フィルタはASP.NETパイプラインに関係しない追加の要求パイプラインです。また、作成したコントローラの後に、リクエストを検証できるロジックをアクションメソッドに追加することができます。 –
質問は「それは良いアイデアですか?」と回答はノーです。 OPは*どのように*認証が実行されているかについては言及していません。それがホストによって行われるかフィルターによって行われるかにかかわらず、アイデンティティは引き続き同じ方法でアクセスされます。つまり、ある時点で認証メカニズムを変更する場合、コントローラを奇妙で素晴らしい方法で壊すことになります。 – Aleks