我有一个基于MVC4的Intranet应用程序,采用Windows身份验证。
当我需要在控制器中使用WindowsIdentity进行授权时,我只需使用:
HttpContext.User.Identity
现在我想使用新的Asp.Net WebAPI进行一些Ajax调用。
是否有一种像在MVC Controller中那样轻松地获取WindowsIdentity对象的方法?
我有一个基于MVC4的Intranet应用程序,采用Windows身份验证。
当我需要在控制器中使用WindowsIdentity进行授权时,我只需使用:
HttpContext.User.Identity
现在我想使用新的Asp.Net WebAPI进行一些Ajax调用。
是否有一种像在MVC Controller中那样轻松地获取WindowsIdentity对象的方法?
HttpContext
。您可以访问控制器的User
属性,这是一种无需直接引用HttpContext
就能访问身份验证信息的方式。public class MyController : ApiController
{
public string Get()
{
var indenty = this.User.Identity;
}
}
为什么
控制器的User
属性提供了一种抽象层,使得模拟测试变得更容易,这个抽象层也可以实现更大的可移植性,例如如果使用了WebApi Self Host,你甚至无法访问 HttpContext
。