Files
emall-api/FutureMailAPI/Controllers/BaseController.cs

54 lines
1.7 KiB
C#
Raw Normal View History

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