要在ASP.NET Core应用程序中跟踪经过身份验证的用户ID,可以使用一些内置的功能和代码示例。
首先,在Startup.cs文件中,确保已启用身份验证中间件。这可以通过在ConfigureServices方法中添加以下代码来完成:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
// 配置OpenID Connect选项
options.Authority = "https://your-identity-server.com";
options.ClientId = "your-client-id";
options.ClientSecret = "your-client-secret";
options.ResponseType = "code";
options.Scope.Add("openid");
options.Scope.Add("profile");
options.SaveTokens = true;
});
这将启用Cookie身份验证中间件和OpenID Connect中间件,并配置OpenID Connect选项以与您的身份验证服务器进行通信。
接下来,在您想要跟踪用户ID的地方,例如控制器的操作方法中,您可以通过以下方式获取当前经过身份验证的用户ID:
[Authorize]
public IActionResult MyAction()
{
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
// 使用用户ID执行其他操作
return View();
}
这里的User变量是一个ClaimsPrincipal对象,它包含有关当前经过身份验证的用户的所有声明。通过调用FindFirstValue方法并传递ClaimTypes.NameIdentifier常量,您可以获取用户的唯一标识符。
此外,您还可以在视图中访问用户ID。在视图中,可以通过以下方式获取用户ID:
@using System.Security.Claims
@{
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
}
Welcome, user with ID: @userId!
在这个例子中,我们在Razor视图中使用了@{}
块来获取用户ID,并将其显示在页面上。
通过这些步骤,您可以在ASP.NET Core应用程序中轻松地跟踪经过身份验证的用户ID,并在需要时使用它。