处理网站和cms身份验证的用户身份



支持网站(客户(用户的用户帐户注册和登录,以及在同一项目中使用单独的用户身份服务支持cms用户帐户/管理员登录的最佳做法是什么?

为了评估这种场景的工作原理,我构建了一个测试mvc.net core 3.1网站项目,该项目利用Piranha CMS,该CMS反过来使用用户身份服务来管理访问CMS管理面板的身份验证,并将其与mvc网站相结合,该网站还支持网站客户/用户注册/登录的个人帐户的用户身份。

以下是启动类ConfigureServices方法的一个示例,用于说明使用用户身份服务设置cms和网站,该方法当前在启动时出错,并显示消息-System。InvalidOperationException:'方案已存在:标识。应用程序

// CMS Setup
services.AddPiranha(options =>
{
options.UseFileStorage();
options.UseImageSharp();
options.UseManager();
options.UseTinyMCE();
options.UseMemoryCache();
options.UseEF<SQLServerDb>(db => db.UseSqlServer(Configuration.GetConnectionString("db-cms-users")));
options.UseIdentityWithSeed<IdentitySQLServerDb>(db => db.UseSqlServer(Configuration.GetConnectionString("db-cms-users")));
});
// Site Setup
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("db-site-users")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true).AddEntityFrameworkStores<ApplicationDbContext>(); 

上述代码的问题是,cms和网站都使用用户身份,并且由于两者都使用"默认"身份而发生冲突,是否有办法解决这个问题,并且仍然支持cms和用户/帐户网站。

因此,我的问题是,在同一个项目中,这两者结合在一起似乎不太好,我想知道在这种情况下,支持一个同时使用cms和网站的网络项目的最佳实践是什么?

用户管理在Piranha中是完全抽象的,因此您可以通过任何方式对CMS用户进行身份验证。模板中包含的Identity包是作为样板包含的,因为大多数用户都是基于ASP的单一安全设置。NET标识。经理在登录时唯一关心的是:

  1. 它找到了一个实现Piranha.ISecurity的注册服务(https://github.com/PiranhaCMS/piranha.core/blob/master/core/Piranha/ISecurity.cs)
  2. 用户在登录后获得所需的充分声明(https://piranhacms.org/docs/architecture/authentication)

配置标识

模板中提供的代码只是设置标准的"标识"设置,但您可以覆盖所有内容来执行自己喜欢的操作。方法CCD_ 2实际上可以采用另外两个参数来配置IdentityOptionsCookieOptions以任何方式工作。查看此页面以供参考:

https://piranhacms.org/docs/architecture/authentication/identity

Piranha中的用户帐户

如果你只想在某个地方添加最终用户帐户,可以在Piranha CMS中通过在管理员中设置新角色并添加你想要的应用程序策略来完成。你可以在这里阅读:

https://piranhacms.org/docs/tutorials/securing-pages

关于多种身份验证方案的更多指南

我从来没有真正部署过使用这种设置的网站,正如我所知,有人一直在这样做:(GitHub上的这个问题只谈到了这一点,并且设置是成功的。由于我无法在这个场景中给出具体的指导,也许在这个线程中联系用户可以给你所需要的!

https://github.com/PiranhaCMS/piranha.core/issues/627

虽然不是答案,但我希望这将为您提供找到答案所需的内容。

向致以最良好的问候

最新更新