Kentico用户和角色管理

Kentico用户和角色管理,kentico,Kentico,我在经营肯迪科11。我有一个部分的网站,需要用户登录阅读和下载一些隐藏的内容 这些用户存储在配置->用户表中。我有一个自定义角色,这些用户被分配到该角色,以便他们可以登录并查看内容和下载文件。我们有一个与Kentico集成的外部(CRM)系统。此CRM根据年度培训记录自动创建用户帐户和分配角色。因此,不会手动创建用户帐户。CRM管理创建和停用。这与预期的1000个用户一起工作 业务需求已经改变,现在需要两个级别的访问。将需要创建第二个角色。第一层允许对内容进行基本访问。新的第二层(附加角色)将允

我在经营肯迪科11。我有一个部分的网站,需要用户登录阅读和下载一些隐藏的内容

这些用户存储在配置->用户表中。我有一个自定义角色,这些用户被分配到该角色,以便他们可以登录并查看内容和下载文件。我们有一个与Kentico集成的外部(CRM)系统。此CRM根据年度培训记录自动创建用户帐户和分配角色。因此,不会手动创建用户帐户。CRM管理创建和停用。这与预期的1000个用户一起工作

业务需求已经改变,现在需要两个级别的访问。将需要创建第二个角色。第一层允许对内容进行基本访问。新的第二层(附加角色)将允许访问文件下载

第一层仍由CRM的第三方集成管理(分配了客户和第一角色)。第二层必须手动控制。必须有人登录到Kentico,配置->用户。搜索用户并添加第二个角色

为了避免给程序员带来负担,我需要让我的一些非技术团队(客户支持、产品管理)能够管理用户

这些非技术性公司没有Kentico CMS账户。我不想让他们成为管理员,给他们“一切的钥匙”

我的问题是针对配置->权限——我是否可以授予我的非技术团队对“CMS基本用户”和管理用户角色“承包商”(以及我的自定义角色1)的读取权限,并期望他们能够登录到Kentico,导航到用户并维护我的承包商

这将允许他们查看我的承包商,并将他们添加到新的第二个角色“承包商下载”。以鲍勃为例。smith@someemail.com例如Bob是一个承包商,CRM工具将他添加到用户表中,角色经过身份验证,包括Everyone和contractor。Bob已经完成了一些培训,现在需要承包商下载角色


Kentico是否有适当的最佳实践,为我的非技术人员提供CMS基本用户角色和承包商角色,以便他们能够管理我们的承包商?此配置是否存在风险?他们是否能够管理其他角色?我不希望他们能够编辑内容管理、电子商务或任何其他配置。

很难授予管理一个角色但管理另一个角色的权限。通常在UI权限方面,您要么拥有整个操作的权限,要么没有

虽然使用Kentico的后端UI将是有益的,并且给他们一个具有有限管理角色的帐户,我认为这很好,但我要做的是给他们一个,并且所有UI元素将是一个可分配给角色的可用用户的下拉列表,以及一个使用Kentico的API分配他们的按钮

您可以使用自定义控件Web部件制作整个内容,并指向您的ascx,不需要任何特别的花哨内容

分配角色的API非常简单:

UserRoleInfoProvider.AddUserToRole(ValidationHelper.GetInteger(ddlavableUsers.SelectedValue,0),RoleInfoProvider.GetRole(“ContractorDownload”).RoleID)

使用以下数据集将下拉列表设置为(UserID,UserFullName):

int[]useridsincontactorrole=UserRoleInfoProvider.GetUserRoles()
.WhereEquals(“RoleID”,RoleInfoProvider.GetRole(“承包商”).RoleID)
.Select(x=>x.UserID).ToArray();
int[]UserIDsAlreadyAssigned=UserRoleInfoProvider.GetUserRoles()
.WhereEquals(“RoleID”,RoleInfoProvider.GetRole(“ContractorDownload”).RoleID)
.Select(x=>x.UserID).ToArray();
ddlAvailableUsers.DataSource=UserInfoProvider.GetUsers()。其中(“UserID”,UserIDsInContractorRole)。其中notin(“UserID”,UserIDsAlreadyAssigned)。Columns(“UserID,FullName”)。OrderBy(“FullName”)。Result;
ddlAvailableUsers.DataValueField=“UserID”;
ddlAvailableUsers.DataTextField=“FullName”;
ddlAvailableUsers.DataBind();

关于自定义控件的好主意。我还假设我可以使用类似的技术为远程角色分配添加此功能。检索具有该角色的所有用户的数据集。调用.removeUserFromRole()方法。这有什么缺点吗?