Asp.net mvc 4 Windows身份验证和Asp.NETWebAPI
我有一个基于MVC4的具有Windows身份验证的Intranet应用程序 当我在控制器中需要WindowsIdentity进行授权时,我只使用它Asp.net mvc 4 Windows身份验证和Asp.NETWebAPI,asp.net-mvc-4,asp.net-web-api,windows-authentication,Asp.net Mvc 4,Asp.net Web Api,Windows Authentication,我有一个基于MVC4的具有Windows身份验证的Intranet应用程序 当我在控制器中需要WindowsIdentity进行授权时,我只使用它 HttpContext.User.Identity 现在我想将新的Asp.NETWebAPI用于一些Ajax调用 有没有一种方法可以像在MVC控制器中一样简单地获取WindowsIdentity对象?请不要从控制器中引用HttpContext 您可以通过访问控制器属性来访问标识,而无需直接引用HttpContext public class My
HttpContext.User.Identity
现在我想将新的Asp.NETWebAPI用于一些Ajax调用
有没有一种方法可以像在MVC控制器中一样简单地获取WindowsIdentity对象?请不要从控制器中引用
HttpContext
您可以通过访问控制器属性来访问标识,而无需直接引用HttpContext
public class MyController : ApiController
{
public string Get()
{
var indenty = this.User.Identity;
}
}
为什么
controllersUser
属性提供了一个抽象级别,允许更容易的模拟,从而可以进行单元测试。这种抽象还允许更大的可移植性,例如,如果这是WebApi自宿主,您甚至无法访问HttpContext
要了解有关如何单元测试和模拟用户属性的更多信息,请阅读。有关更多信息,请阅读:可移植性。一个小的澄清:如果您想让Identity使用User.Identity,我很感激答案的清晰性,如果您解释为什么不从控制器引用HttpContext,那将对每个人都有启发。@dansan感谢您的评论。我已经简要解释了原因。