我有一个基于 MVC4 的带有 Windows 身份验证的 Intranet 应用程序。
当我在控制器中需要 WindowsIdentity 进行授权时,我只需使用
HttpContext.User.Identity
现在我想将新的 Asp.Net WebAPI 用于一些 Ajax 调用。
有没有办法像在 MVC 控制器中一样简单地获取 WindowsIdenty 对象?
我有一个基于 MVC4 的带有 Windows 身份验证的 Intranet 应用程序。
当我在控制器中需要 WindowsIdentity 进行授权时,我只需使用
HttpContext.User.Identity
现在我想将新的 Asp.Net WebAPI 用于一些 Ajax 调用。
有没有办法像在 MVC 控制器中一样简单地获取 WindowsIdenty 对象?
请不要HttpContext
从控制器中引用。
您可以访问 ControllersUser
属性,这是通过不直接引用来访问身份的方式HttpContext
。
public class MyController : ApiController
{
public string Get()
{
var indenty = this.User.Identity;
}
}
为什么
controllersUser
属性提供了一个抽象级别,允许更轻松地进行模拟和单元测试。这种抽象还允许更大的可移植性,例如,如果这是 WebApi Self Host,您甚至无法访问HttpContext
.