Composing | Umbraco CMS
# package-development
s
You can add it in an IComposer. It will automatically be picked up when the site starts, and from there you can do what you would do in Program.cs https://docs.umbraco.com/umbraco-cms/implementation/composing
t
Thank you, @skttl. Already tested the filtering below but didn't work!
Copy code
// CorsComposer.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.DependencyInjection;

public class CorsComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services.AddCors(options =>
        {
            options.AddPolicy("AstraCorsPolicy", builder =>
            {
                builder.WithOrigins("https://192.168.1.12:5001") // Specify allowed origins
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            });
        });
    }
}
Copy code
//CorsMiddlewareComposer.cs
using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

public class CorsMiddlewareComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services.AddTransient<IStartupFilter, CorsStartupFilter>();
    }
}

public class CorsStartupFilter : IStartupFilter
{
    public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
    {
        return app =>
        {
             // Ensure CORS is applied between UseRouting and UseEndpoints
            app.UseRouting();

            app.UseCors("AstraCorsPolicy");

            next(app); 
        };
    }
}
Copy code
//AstraController.cs
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Web.Common.Controllers;
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.PublishedContent;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Authorization;

namespace Astra.Controllers
{
    [EnableCors("AstraCorsPolicy")]
    public class AstraController : UmbracoApiController
    {...
> You can add it in an IComposer. It will automatically be picked up when the site starts, and from there you can do what you would do in Program.cs The
builder
is accessible but how to access the
WithMiddleware
of the
app.useUmbraco()
not found!
s
Check the docs 🙂 You add middleware by configuring UmbracoPipelineOptions https://docs.umbraco.com/umbraco-cms/reference/routing/custom-middleware
2 Views