11

アクションフィルターで現在ログインしているユーザーにアクセスする必要があります。IDはDelegatingHandler、実行チェーンのさらに上流で設定されます。

を使用して現在にアクセスできます。IPrincipalHttpContext.Current.UserHttpContext.Currentこれまでのところ、スタイルが悪いように見えた ので、使用を避けました。まず第一に、あなたのコードはIISでホストされている場合にのみ機能し、第二に、それはSystem.Web私が害を及ぼさないと思う参照を含んでいますがSystem.Net.Http、可能であれば私は固執したいと思います。 古き良き" "に頼るのは間違っていると感じHttpContextます。

内でユーザーのIDにアクセスする他の方法はありますActionFilterか?HttpContextまたは、セルフホストアプリケーションを実行する予定がない場合に使用しても大丈夫ですか?

4

1 に答える 1

17

当たり前のことを見落としていました。の中に Controller プロパティがあることに気づきませんでしたControllerContext

var username = ((ApiController)context.ControllerContext.Controller).User.Identity.Name;
于 2013-03-11T09:26:57.543 に答える