处理网站和 cms 身份验证的用户身份
Handling user-identity for both website and cms authentication
支持网站(客户)用户的用户帐户注册和登录以及在同一项目中为网站和 cms 使用单独的用户身份服务支持 cms 用户帐户/管理员登录的最佳做法是什么?
为了评估这种情况如何工作,我构建了一个测试 mvc .net core 3.1 网站项目,该项目利用 Piranha CMS,后者又使用用户身份服务来管理访问 cms 管理面板的身份验证,将此与 mvc 网站相结合,还支持网站个人帐户的用户身份 customer/users 注册/登录。
以下是启动 class ConfigureServices 方法的示例,用于说明使用用户身份服务设置 cms 和网站,目前在启动时出错并显示一条消息 - System.InvalidOperationException: 'Scheme already exists: 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 和站点都使用用户身份,并且由于两者都使用 'default' 身份而导致冲突,有没有解决这个问题的方法并且仍然支持 user/accounts.
的 cms 和网站
所以我的问题是,这两个在同一个项目中一起出现似乎不太好,我想知道在这种情况下,支持同时使用 cms 和站点的 web 项目的最佳实践是什么使用用户身份 and/or 在这种情况下这是否完全可能?
用户管理在 Piranha 中是完全抽象的,所以您实际上可以以任何您想要的方式验证 CMS 用户。模板中包含的身份包作为样板包含在内,因为大多数用户是基于 ASP.NET 身份的单一安全设置。管理员登录时唯一关心的是:
- 它找到了一个实现了
Piranha.ISecurity
(https://github.com/PiranhaCMS/piranha.core/blob/master/core/Piranha/ISecurity.cs) 的注册服务
- 用户在登录后获得所需的充分声明(https://piranhacms.org/docs/architecture/authentication)
配置身份
模板中提供的代码仅设置了标准身份设置,但您可以覆盖所有内容以执行您喜欢的操作。 UseIdentityWithSeed<T>
方法实际上可以使用另外两个参数来配置 IdentityOptions
和 CookieOptions
以任何方式工作。查看此页面以供参考:
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
虽然不是答案,但我希望这能为您提供找到答案所需的信息。
此致
支持网站(客户)用户的用户帐户注册和登录以及在同一项目中为网站和 cms 使用单独的用户身份服务支持 cms 用户帐户/管理员登录的最佳做法是什么?
为了评估这种情况如何工作,我构建了一个测试 mvc .net core 3.1 网站项目,该项目利用 Piranha CMS,后者又使用用户身份服务来管理访问 cms 管理面板的身份验证,将此与 mvc 网站相结合,还支持网站个人帐户的用户身份 customer/users 注册/登录。
以下是启动 class ConfigureServices 方法的示例,用于说明使用用户身份服务设置 cms 和网站,目前在启动时出错并显示一条消息 - System.InvalidOperationException: 'Scheme already exists: 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 和站点都使用用户身份,并且由于两者都使用 'default' 身份而导致冲突,有没有解决这个问题的方法并且仍然支持 user/accounts.
的 cms 和网站所以我的问题是,这两个在同一个项目中一起出现似乎不太好,我想知道在这种情况下,支持同时使用 cms 和站点的 web 项目的最佳实践是什么使用用户身份 and/or 在这种情况下这是否完全可能?
用户管理在 Piranha 中是完全抽象的,所以您实际上可以以任何您想要的方式验证 CMS 用户。模板中包含的身份包作为样板包含在内,因为大多数用户是基于 ASP.NET 身份的单一安全设置。管理员登录时唯一关心的是:
- 它找到了一个实现了
Piranha.ISecurity
(https://github.com/PiranhaCMS/piranha.core/blob/master/core/Piranha/ISecurity.cs) 的注册服务
- 用户在登录后获得所需的充分声明(https://piranhacms.org/docs/architecture/authentication)
配置身份
模板中提供的代码仅设置了标准身份设置,但您可以覆盖所有内容以执行您喜欢的操作。 UseIdentityWithSeed<T>
方法实际上可以使用另外两个参数来配置 IdentityOptions
和 CookieOptions
以任何方式工作。查看此页面以供参考:
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
虽然不是答案,但我希望这能为您提供找到答案所需的信息。
此致