在ActionResult方法之外找到用户
我问过这个问题 。
即使该答案解决了我收到的错误消息..我想找到当前正在使用该应用程序的用户…而不是必须在每个操作方法中写入…
var userIdentity = HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " ");
我希望在任何ActionResult方法之前将它放在控制器类的顶部,这样我就可以在每个操作方法中引用变量而不是如上所示的整行。或者甚至在构造函数中设置它,就像我一样根本不必参考它。
任何帮助表示赞赏。
您可以创建一个Extension方法
public static class ExtensionHelper { public static string UserIdentity(this HttpContext context) { return context.User.Identity.Name.Split('\\')[1].Replace(".", " "); } }
在Conttroller中使用
var identity = HttpContext.UserIdentity()
如果它看起来更干净,你可以使用控制器扩展做同样的事情。
public static class ExtensionHelper { public static string UserIdentity(this Controller controller) { return controller.HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " "); } }
在Conttroller中使用
var identity = this.UserIdentity()
如果你使用了一个合适的IoC或DI框架然后有一个Context类,你可以注入,如果有一个用户上下文,就会启动这个状态。 然后,您可以将其注入Controller,而不是尝试扩展控制器。 我个人最喜欢的是AutoFac,但有很多,使用几乎任何DI框架实现这一点相对简单。