2

我正在使用 Visual Studio 2015 创建一个 Asp.net Core 1.0 (WebApi) 项目。模板是 ASP.NET Core Web Application (.NET Core)\WebApi(未选择身份验证)。

在此处输入图像描述

在 ValuesController 中,我想从调用该方法的客户端获取 Windows 标识。

using System.Security.Claims;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Http;
...
[Route("api/[controller]")]
    public class ValuesController : Controller
    {
        [HttpGet]
        [Route("GetIdentity")]
        public string GetIdentity()
        {
            //method1
            var userId = User.GetUserId();
            //method2
            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            return userId;
        }
    }

目前在method1和中没有结果返回method2。有什么想法吗?

4

1 回答 1

3

如果没有任何身份验证,任何 Web 框架都无法确定用户的身份。

选择项目模板"ASP.NET Core Application (.NET Core)\WebApi”并将身份验证从“ No Authentication”更改为您认为合适的任何身份验证,例如“ Windows Authentication”。

然后您可以访问User控制器的成员,如果它使用[Authorize]属性进行了注释。

[Authorize]
[Route("api/[controller]")]
public class ValuesController : Controller
{        
    [HttpGet]
    public string Get()
    {
        return User.Identity.Name;
    }
}

如果您想拥有个人用户帐户,请选择 MVC 模板(而不是 WebAPI)。然后,您可以注册个人帐户并使用他们的凭据进行身份验证。

如果您从没有身份验证的模板开始,则可以launchSettings.jsonProperties文件夹中启用 Windows 身份验证。

{
   "iisSettings": {
      "windowsAuthentication": true,
      "anonymousAuthentication": false,
      ...
    },
    ...
 }
于 2016-08-28T09:04:13.413 回答