Files
emall-api/FutureMailAPI/Controllers/BaseController.cs
2025-10-16 15:21:52 +08:00

54 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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