Forma correcta de obtener la ID de usuario actual en Entity Framework Core

Hay un montón de respuestas diferentes flotando por aquí para los diferentes RC de ASP.NET Core sobre cómo obtener la identificación del usuario actualmente conectado. Quería hacer la pregunta definitiva aquí. Tenga en cuenta que project.json ahora tiene "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0"

Con RC1, podría hacer algo como esto:

using Microsoft.AspNet.Identity;
using System.Security.Claims;

User.GetUserId();

Pero con la versión 1 recién lanzada de EF Core, Microsoft.AspNet.Identity no es la versión correcta.

Hubo sugerencias para usar UserManager, que parece mucho solo para obtener el usuario actualmente conectado:

private Task<ApplicationUser> GetCurrentUserAsync() => _userManager.GetUserAsync(HttpContext.User);

var user = await GetCurrentUserAsync();
var userId = user?.Id;

Otro método que encontré fue:

private readonly UserManager<ApplicationUser> _userManager;
_userManager.GetUserId(User)

Entonces, con ASP.NET Core 1 RTM y EF Core 1 con las siguientes bibliotecas en project.json, ¿cuál es la forma correcta de obtener la identificación del usuario actualmente conectado?

"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",

Respuestas a la pregunta(3)

Su respuesta a la pregunta