لوگوی فریم‌ورک Fusion ساخته Cipher UnitFusion

Middleware

Middleware سراسری و روی route برای C# — بدون پیش‌فرض فریم‌ورک

نمای کلی

delegate object? FusionMiddleware(FusionRequest request, Func<FusionRequest, object?> callNext);

هیچ middleware پیش‌فرضی نیست. از app.Use(...) و/یا [Route(..., Roles = ...)] استفاده کنید.

سراسری (Global)

var MIDDLEWARE = new List<FusionMiddleware>
{
    // Middleware.BearerJwt(),
};

using var app = new FusionApp(SettingsStore.GetSettings());
foreach (var mw in MIDDLEWARE) app.Use(mw);
app.Listen();

Middleware سفارشی

FusionMiddleware RequireApiKey = (request, callNext) =>
{
    if (!request.Headers.TryGetValue("x-api-key", out var key) || key != "secret")
        return new Dictionary<string, object?>
        {
            ["status"] = 401,
            ["body"] = new { detail = "invalid api key" },
        };
    return callNext(request);
};

در request.State بنویسید؛ handlerها از State بخوانند.

ابزارهای Roles / JWT

MIDDLEWARE.Add(Middleware.BearerJwt()); // optional verify: callback

[Route("/api/admin", Roles = new[] { "admin" })]
public class AdminModule : FusionBaseApi
{
    public object Get() => Response(new { ok = true });
}
Middleware.RequireRoles("admin", "super_admin");
Middleware.RequireRoles(new[] { "admin" }, claim: "roles", stateKey: "jwt");

Decode پیش‌فرض bearer بدون verify و به‌صورت base64url است — برای production مقدار verify بدهید.

در این صفحه