【问题标题】:How do I route Piranha CMS to a particular path in an existing ASP.Net Core MVC app?如何将 Piranha CMS 路由到现有 ASP.Net Core MVC 应用程序中的特定路径?
【发布时间】:2022-08-05 15:45:20
【问题描述】:

我一直在尝试将Piranha CMS(版本 10)添加到我现有的网站,这是一个 .Net 6 上的 ASP.Net Core MVC 应用程序。它目前使用区域来保存不同主题(音乐、游戏等)的内容),并且我希望有一个运行 Piranha 站点(和管理器)的博客区域。但是,我只是无法弄清楚如何配置 Startup.cs 来让这种情况发生。

下面是我的Startup.cs 文件的Configure 方法(我还没有移动到单一的Program.cs 样式)。我创建了一个“博客”区域,并在那里复制了 CMSController 类以及模板视图和模型,但我不确定这是否正确。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory, IApi api)
    {
        ...

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: \"GitHub\",
                template: \"{area:exists}/{controller=Home}/{action=Index}/{id?}\");
            routes.MapRoute(
                name: \"Games\",
                template: \"{area:exists}/{controller=Home}/{action=Index}/{id?}\");
            routes.MapRoute(
                name: \"Blog\",
                template: \"{area:exists}/{controller=Cms}/{action=Index}/\");
            routes.MapRoute(
                name: \"default\",
                template: \"{controller=Home}/{action=Index}/{id?}\");
        });

        // Piranha stuff
        App.Init(api);
        new ContentTypeBuilder(api)
            .AddAssembly(typeof(Startup).Assembly)
            .Build()
            .DeleteOrphans();

        // Configure Tiny MCE
        EditorConfig.FromFile(\"editorconfig.json\");
        
        app.UsePiranha(options =>
        {
            options.UseManager();
            options.UseTinyMCE();
            options.UseIdentity();
        });
    } 

我的ConfigureServices 方法还有一些额外的配置:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages()
            .AddRazorRuntimeCompilation()
            .AddPiranhaManagerOptions(); ;

        ...

        services.AddAuthorization(options =>
        {
            options.AddPolicy(\"Administrators\", new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .RequireClaim(\"role\", \"Administrators\")
                .Build());
            options.AddPolicy(\"PiranhaRoles\", new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .RequireClaim(\"piranharoles\", \"PiranhaRoles\")
                .Build());
            ...
        });

        services.AddPiranha(options =>
        {
            options.UseFileStorage(naming: Piranha.Local.FileStorageNaming.UniqueFolderNames);
            options.UseImageSharp();
            options.UseCms();
            options.UseManager();
            options.UseTinyMCE();
            options.UseMemoryCache();
            options.UseEF<SQLServerDb>(db =>
                db.UseSqlServer(connectionString));
        });
    }

当我启动应用程序并转到 /Blog 时,它不会返回任何视图(我希望考虑到没有真正的索引页面。/Manager 也不显示。所以我的问题是:如何配置我的Startup 类中的路由在mywebsite.com\\Blog 托管Piranha CMS 应用程序(以及mywebsite.com\\Blog\\Manager 的经理)?

额外的问题:为什么我必须在我的 ConfigureServices 方法中添加 services.AddAuthorization 和 Piranha 角色?必须有一种方法可以添加所需的角色,而不必以这种方式单独指定所有角色。

    标签: c# asp.net-mvc piranha-cms


    【解决方案1】:

    @heffay。你找到解决方案了吗?我正在努力解决类似的问题。如果您能分享您的发现,那就太好了。

    (我无法发表评论,所以我将其添加为答案)。

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多