我有一個(gè)用[Authorize]屬性裝飾的控制器。我想完成以下工作,以便不必重復(fù)創(chuàng)建存儲(chǔ)庫(kù)obj并在每個(gè)方法中傳遞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在構(gòu)造函數(shù)或Initialize方法中不可用。在控制器構(gòu)造函數(shù)中注入經(jīng)過(guò)身份驗(yàn)證的用戶的最佳實(shí)踐是什么?如果我們使用依賴項(xiàng)注入-在Register方法中將自定義創(chuàng)建的UserResolverService注冊(cè)到WebApiConfig.cs中時(shí)-User.Identity也將不可用。這是Web API的一個(gè)非常常見(jiàn)的問(wèn)題,但不知何故找不到任何顯示正確解決方案的文章。它真的可以實(shí)現(xiàn)嗎?如果可以,請(qǐng)?zhí)峁┮恍┦纠a嗎?
2 回答

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