Elsa Core 之 Server权限控制


组件未自带权限控制,官方建议使用asp.net core自带的权限控制实现

我这边尝试了下,如下代码应该可行

定义Filter

public class ElsaApiAuthorizeFilter : IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext context)
    {
        //throw new NotImplementedException();
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.ActionDescriptor.DisplayName.StartsWith("Elsa.Server.Api"))
        {
            //这里是您的验证逻辑,例如验证是否登录
            if (context.HttpContext.User.Identity.IsAuthenticated)
            {
                context.Result = new Microsoft.AspNetCore.Mvc.JsonResult(new { message = "未登录" })
                {
                    StatusCode = 401
                };
                return;
            }
        }
    }
}

全局注册

services
    .AddElsaSwagger()
    .AddElsaApiEndpoints()
    .AddControllers(opt =>
    {
        opt.Filters.Add(typeof(ElsaApiAuthorizeFilter));
    });

关键字: elsa、权限控制、访问控制、访问权限