我需要在我的操作过滤器中访问当前登录的用户。身份由执行链上的DelegatingHandler
设置。
我可以使用IPrincipal
访问当前HttpContext.Current.User
。
到目前为止,我避免使用HttpContext.Current
,因为在我看来它是糟糕的风格。
首先,您的代码只有在IIS中托管时才会起作用,其次它包含对System.Web
的引用,我认为这并不会造成伤害,但如果可能,我更愿意坚持使用System.Net.Http
。
依靠好的旧“HttpContext
”感觉不对。
是否有其他方式可以在ActionFilter
内访问用户的身份?或者,如果您不打算运行自托管应用程序,是否可以使用HttpContext
?
答案 0 :(得分:17)
我忽略了显而易见的事实。我没有意识到ControllerContext
中有一个Controller属性。
var username = ((ApiController)context.ControllerContext.Controller).User.Identity.Name;