【发布时间】: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