这个问题在这里已经有一个答案:>
Can I access IIdentity from Web API4个
我需要在我的操作过滤器中访问当前登录的用户.身份由DelegatingHandler进一步设定执行链.
我需要在我的操作过滤器中访问当前登录的用户.身份由DelegatingHandler进一步设定执行链.
我可以使用HttpContext.Current.User访问当前的IPrincipal.
到目前为止,我避免使用HttpContext.Current,因为它对我来说是不好的风格.
首先你的代码只有在IIS中托管时才能工作,其次它包含对System.Web的引用,我猜不会受伤,但是如果可能的话我宁愿坚持使用System.Net.Http.
依靠好的旧“HttpContext”感觉错了.
有没有其他方法可以在ActionFilter中访问用户的身份?或者,如果您不打算运行自托管应用程序,可以使用HttpContext吗?
解决方法
我忽略了明显的.我没有意识到ControllerContext中有一个Controller属性.
var username = ((ApiController)context.ControllerContext.Controller).User.Identity.Name;