Yuebon.NetCore/Yuebon.AspNetCore/Mvc/ApiController.cs
(开头部分) 9KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
namespace Yuebon.AspNetCore.Controllers;
/// <summary>
/// WebApi控制器基类
/// </summary>
[ApiController]
[EnableCors("yuebonCors")]
public class ApiController : Controller
{
/// <summary>
/// 当前登录的用户属性
/// </summary>
public YuebonCurrentUser CurrentUser;
#region
/// <summary>
/// 重写基类在Action执行之前的事情
/// 根据token获得当前用户,允许匿名的不需要获取用户
/// </summary>
/// <param name="context">重写方法的参数</param>
public override void OnActionExecuting(ActionExecutingContext context)
{
try
{
var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
//匿名访问,不需要token认证、签名和登录
var allowanyone = controllerActionDescriptor.MethodInfo.GetCustomAttribute(typeof(AllowAnonymousAttribute), true);
if (allowanyone != null) return;
CommonResult result = new CommonResult();
//需要token认证
string authHeader = context.HttpContext.Request.Headers["Authorization"];//Header中的token
if (string.IsNullOrEmpty(authHeader))
{
result.ErrCode = "40004";
result.ErrMsg = ErrCode.err40004;
context.Result = ToJsonContent(result);
return;
}
else
{
string token = string.Empty;
if (authHeader != null && authHeader.StartsWith("Bearer ", StringComparison.Ordinal)) token = authHeader.Substring(7);
TokenProvider tokenProvider = new TokenProvider();
result = tokenProvider.ValidateToken(token);
//token验证失败
if (!result.Success)
{
context.Result = ToJsonContent(result);
}
else
{
#region 签名验证
bool boolSign = context.HttpContext.Request.Headers["sign"].SingleOrDefault().ToBool(true);
var isSign = controllerActionDescriptor.MethodInfo.GetCustomAttribute(typeof(NoSignRequiredAttribute), true);
//需要签名验证
if (isSign == null && boolSign)
{
CommonResult resultSign = SignHelper.CheckSign(context.HttpContext);
if (!resultSign.Success)
后面还有 163 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。