ASP.NET 用户
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 User 属性。此属性提供对 Web 应用程序中当前用户身份和声明的访问。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。User 属性对于身份验证和授权至关重要。
基本定义
ASP.NET 中的 User 属性表示当前 HTTP 请求的安全上下文。它在控制器、Razor Pages 和中间件组件中可用。
User 提供有关已验证用户的信息,包括他们的身份、角色和声明。它实现了 System.Security 中的 ClaimsPrincipal 类。
此属性由 ASP.NET 的身份验证中间件自动填充。它通常与 Identity、JWT 或其他身份验证方案一起使用。
ASP.NET 用户示例
以下示例演示了如何在控制器中使用 User 属性。
Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
};
});
builder.Services.AddControllers();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
这将在 ASP.NET 应用程序中设置 JWT bearer 身份验证。身份验证中间件会为授权的请求填充 User 属性。
Controllers/UserController.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
[ApiController]
[Route("api/[controller]")]
[Authorize]
public class UserController : ControllerBase
{
[HttpGet("profile")]
public IActionResult GetUserProfile()
{
var userName = User.Identity?.Name;
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
var email = User.FindFirstValue(ClaimTypes.Email);
return Ok(new {
UserName = userName,
UserId = userId,
Email = email
});
}
[HttpGet("roles")]
public IActionResult GetUserRoles()
{
var roles = User.Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value);
return Ok(roles);
}
[HttpGet("admin")]
[Authorize(Roles = "Admin")]
public IActionResult AdminEndpoint()
{
return Ok("Welcome Admin!");
}
}
此控制器演示了使用 User 属性的三种不同方法。第一种方法从声明中检索基本用户配置文件信息。
第二种方法从 User 属性中提取所有角色声明。第三种方法使用 Authorize 属性展示基于角色的授权。
控制器级别的 Authorize 属性要求所有操作都进行身份验证。Roles 参数将访问限制为特定的用户角色。
该示例展示了 User 如何通过声明访问身份信息。声明是代表用户属性的键值对。
来源
在本文中,我们探讨了 ASP.NET 8 中的 User 属性。此重要功能实现了安全的用户身份验证和授权。