我有一個用[Authorize]屬性裝飾的控制器。我想完成以下工作,以便不必重復創建存儲庫obj并在每個方法中傳遞currentUser:[Authorize]public class HomeController : ApiController{ Repository repo; public HomeController() { var userName = User.Identity.IsAuthenticated ? User.Identity.Name : null; repo = new Repository(userName); } }我知道User.Identity在構造函數或Initialize方法中不可用。在控制器構造函數中注入經過身份驗證的用戶的最佳實踐是什么?如果我們使用依賴項注入-在Register方法中將自定義創建的UserResolverService注冊到WebApiConfig.cs中時-User.Identity也將不可用。這是Web API的一個非常常見的問題,但不知何故找不到任何顯示正確解決方案的文章。它真的可以實現嗎?如果可以,請提供一些示例代碼嗎?
2 回答

哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
您可以注冊工廠代表并從中獲取用戶身份HttpContext.Current
。
這是一個示例代碼 simpleinjector
container.Register<IPrincipal>(() => HttpContext.Current.User);
- 2 回答
- 0 關注
- 248 瀏覽
添加回答
舉報
0/150
提交
取消