网站和cms身份验证的.net核心用户身份

时间:2020-04-28 17:52:20

标签: c# .net core claims-based-identity piranha-cms

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

为了评估这种情况下的工作方式,我已经建立了一个测试mvc .net core 3.1网站项目,该项目利用Piranha CMS,而后者又使用用户身份服务来管理对cms管理面板访问的身份验证。 mvc网站还支持单个帐户的用户身份,供网站客户/用户注册/登录。

以下是启动类ConfigureServices方法的示例,用于说明使用用户身份服务建立cms和网站的过程,当前在启动时出现错误并显示一条消息-System.InvalidOperationException:'方案已存在:Identity.Application '

    // 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和网站来支持Web项目吗?身份和/或在这种情况下是否甚至有可能?

1 个答案:

答案 0 :(得分:1)

用户管理在Piranha中是完全抽象的,因此您实际上可以通过任何方式验证CMS用户的身份。模板中包含的Identity软件包作为样板包含在内,因为大多数用户使用基于ASP.NET Identity的单个安全设置。经理登录时唯一关心的是:

  1. 找到执行Piranha.ISecurityhttps://github.com/PiranhaCMS/piranha.core/blob/master/core/Piranha/ISecurity.cs)的注册服务
  2. 登录(https://piranhacms.org/docs/architecture/authentication)后,用户将获得所需的充分索赔

配置身份

模板中提供的代码仅用于设置标准的“身份”设置,但您可以覆盖所有内容以执行所需的操作。方法UseIdentityWithSeed<T>实际上可以采用两个以上的参数来配置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

虽然不是答案,但我希望这能为您提供找到答案所需的条件。

最诚挚的问候