using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace FutureMailAPI.Controllers { /// /// 基础控制器,提供通用的用户身份验证方法 /// [ApiController] public class BaseController : ControllerBase { /// /// 获取当前用户ID /// 兼容OAuth中间件和JWT令牌两种验证方式 /// /// 用户ID,如果未认证则返回0 protected int GetCurrentUserId() { var userIdClaim = User.FindFirst(ClaimTypes.NameIdentifier); if (userIdClaim != null && int.TryParse(userIdClaim.Value, out var userId)) { return userId; } return 0; } /// /// 获取当前用户邮箱 /// /// 用户邮箱,如果未认证则返回空字符串 protected string GetCurrentUserEmail() { return User.FindFirst(ClaimTypes.Email)?.Value ?? string.Empty; } /// /// 获取当前用户名 /// /// 用户名,如果未认证则返回空字符串 protected string GetCurrentUsername() { return User.FindFirst(ClaimTypes.Name)?.Value ?? string.Empty; } /// /// 获取当前客户端ID /// /// 客户端ID,如果未认证则返回空字符串 protected string GetCurrentClientId() { return User.FindFirst("client_id")?.Value ?? string.Empty; } } }