【问题标题】:WebApi ActionFilterAttribute, HttpActionContext access user name (IPrincipal) [duplicate]WebApi ActionFilterAttribute,HttpActionContext 访问用户名(IPrincipal)[重复]
【发布时间】:2013-02-26 09:52:37
【问题描述】:

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

可以使用HttpContext.Current.User访问当前的IPrincipal 到目前为止,我避免使用HttpContext.Current,因为在我看来它的风格很糟糕。 首先,您的代码只有在 IIS 中托管时才能工作,其次,它包含对 System.Web 的引用,我想这并没有什么坏处,但如果可能的话,我更愿意坚持使用 System.Net.Http依靠老好“HttpContext”感觉不对。

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

【问题讨论】:

  • 该死的..在发布问题之前,我真的进行了彻底的搜索。 5 分钟后,我有两个可行的答案:(

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


【解决方案1】:

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

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

【讨论】:

  • 在 Web API v2 actionContext.RequestContext.Principal 中可以解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2023-03-19
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
相关资源
最近更新 更多