【发布时间】:2012-07-31 12:20:01
【问题描述】:
我有如下所示的 web.config 条目。这是为了控制不同角色的用户对不同页面的访问。
招聘经理和 CRM1 可以访问管理屏幕 CRM3和Transferee可以访问日志屏幕
add key="AdminScreenRoles" value ="Hiring Manager,CRM1"
add key="LogsScreenRoles" value ="CRM3,Transferee "
将来可以授予新角色访问管理屏幕的权限。也可能会引入新页面。
我需要确保当前用户至少可以访问配置文件中的一个页面。我有以下代码。有用。此功能是否有更好/简洁/可扩展的代码?
List<string> authorizedRolesForAdmin = new List<string>((ConfigurationManager.AppSettings["AdminScreenRoles"]).Split(','));
List<string> authorizedRolesForLogs = new List<string>((ConfigurationManager.AppSettings["LogsScreenRoles"]).Split(','));
if ((authorizedRolesForAdmin.Contains(roleName)) || (authorizedRolesForLogs.Contains(roleName)))
{
//Has access to at least one page
}
参考:
【问题讨论】:
-
这在 web.config 文件中可能会变得非常丑陋,我建议您在数据库表中对此进行建模以获得更大的灵活性。
-
您可以考虑两件事。 1. 缓存 List 并在添加新角色时清除缓存,2. 使用包含搜索更快的 Dictionary。
-
或者,如果您的组织使用 Active Directory,请使用 AD 角色/组来管理此信息。
-
@JonH 谢谢。我明白那个。但是这个建议是题外话
-
这就是为什么我们评论,没有回答。
标签: c# asp.net .net algorithm design-patterns