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;
}
}
}