修改接口
This commit is contained in:
		
							
								
								
									
										54
									
								
								FutureMailAPI/Controllers/BaseController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								FutureMailAPI/Controllers/BaseController.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user