ale*_*nso 5 asp.net roles dynamic
创建/删除角色时,我不想修改代码.
if (HttpContext.Current.User.IsInRole("Super Admin") ||
HttpContext.Current.User.IsInRole("Admin") ||
HttpContext.Current.User.IsInRole("Support"))
{
if (HttpContext.Current.User.IsInRole("Admin"))
{
ListBox1.DataSource = Roles.GetAllRoles().Except(
new[] { "Super Admin" });
}
if (HttpContext.Current.User.IsInRole("Support"))
{
ListBox1.DataSource = Roles.GetAllRoles().Except(
new[] { "Super Admin", "Admin" });
}
fillDropDownCustomers();
}
Run Code Online (Sandbox Code Playgroud)
角色通过为用户可以执行的操作分配值来发挥作用。角色不会改变,但这些角色的行为会改变。超动态解决方案往往是矫枉过正。
那么也许你有以下角色
您可以有不同的操作(这取决于您的系统)
ETC
动态部分来自于动作的分配。通过这种方式做事,你并不关心某人扮演什么角色,而是关心他们有什么行为。行动是这种关系中的动态方面。发出请求时,您将使用用户角色来获取分配给该角色的操作(数据库驱动以使其可修改)
将其合并到数据库结构中作为“角色有许多操作”,意味着如果将来情况发生变化,您将需要更新数据库中的关系而不是代码。
数据库结构可能看起来像这样,取决于您的需求。
发出请求时,您识别用户等UserName,然后通过查询 RoleAction 来确定他们所处的角色,从而加载其关联的操作
我会使用枚举来表示您的操作和角色值。这使得使用起来更加容易。为了确保数据库和代码位于接收器中,请确保编写单元测试来协调数据库值与枚举值。
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |