【问题标题】:Windows authentication and Asp.Net Web APIWindows 身份验证和 Asp.Net Web API
【发布时间】:2013-02-14 11:10:26
【问题描述】:

我有一个基于 MVC4 的带有 Windows 身份验证的 Intranet 应用程序。

当我在控制器中需要 WindowsIdentity 进行授权时,我只是使用

 HttpContext.User.Identity

现在我想将新的 Asp.Net WebAPI 用于一些 Ajax 调用。

有没有办法像在 MVC 控制器中一样简单地获取 WindowsIdenty 对象?

【问题讨论】:

    标签: asp.net-mvc-4 asp.net-web-api windows-authentication


    【解决方案1】:

    请不要从控制器引用HttpContext

    您可以访问 Controllers User 属性,这是通过不直接引用 HttpContext 来访问身份的方式。

    public class MyController : ApiController
    {
        public string Get()
        {
             var indenty = this.User.Identity;
        }
    }
    

    为什么

    控制器User 属性提供了一个抽象级别,允许更轻松地模拟和单元测试。这种抽象还允许更大的可移植性,例如如果这是 WebApi Self Host,您甚至无法访问 HttpContext

    要详细了解如何对 User 属性进行单元测试和模拟,请阅读 here。更多信息请阅读:可移植性阅读here

    【讨论】:

    • 一个小说明:如果你想要身份使用 User.Identity
    • 嗯,我很欣赏答案的清晰性,如果您解释为什么不从控制器引用 HttpContext,这将是对每个人的启发。
    • @dansan 感谢您的评论。我已经简要解释了原因。
    猜你喜欢
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2012-06-16
    • 2017-10-22
    • 2017-06-28
    • 2015-09-17
    • 2012-09-10
    • 1970-01-01
    相关资源
    最近更新 更多