WebApi ActionFilterAttribute,HttpActionContext访问用户名(IPrincipal)

时间:2013-03-11 09:20:48

标签: authentication asp.net-web-api actionfilterattribute iprincipal

我需要在我的操作过滤器中访问当前登录的用户。身份由执行链上的DelegatingHandler设置。

可以使用IPrincipal访问当前HttpContext.Current.User 到目前为止,我避免使用HttpContext.Current,因为在我看来它是糟糕的风格。 首先,您的代码只有在IIS中托管时才会起作用,其次它包含对System.Web的引用,我认为这并不会造成伤害,但如果可能,我更愿意坚持使用System.Net.Http依靠好的旧“HttpContext感觉不对。

是否有其他方式可以在ActionFilter内访问用户的身份?或者,如果您不打算运行自托管应用程序,是否可以使用HttpContext

1 个答案:

答案 0 :(得分:17)

我忽略了显而易见的事实。我没有意识到ControllerContext中有一个Controller属性。

var username = ((ApiController)context.ControllerContext.Controller).User.Identity.Name;