微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在枚举字段上使用属性过滤器 -C#

如何解决在枚举字段上使用属性过滤器 -C#

我想知道是否有人可以帮助我。我有一个很大的标记枚举,用于设置应用程序权限。问题是,我想限制谁可以根据他们在应用程序中的权限看到什么。我想知道这是否可以通过属性过滤器轻松完成。我熟悉动作过滤器及其有用性,但不熟悉其他可能执行此操作的过滤器。我想将用户可以看到的访问级别限制在他们的级别和更低级别。第一部分是权限,第二部分是对应用程序的访问级别。

我想做的一个例子是:

A 有 mc_pm 角色,所以他们可以看到一切。

人员 B 具有 bn_pm 角色,因此他们应该只能看到“营、连和科”的访问级别。

这是有问题的枚举。

[Flags]
public enum Permissions : int
{
    disabled = 0,leadership = 1 << 1,personnelManagement = 1 << 2,sectionPoc = 1 << 3,siteAdministrator = 1 << 4,supervisor = 1 << 5,user = 1 << 6,userAdministrator = 1 << 7,majorCommand = 1 << 8,brigade = 1 << 9,battalion = 1 << 10,company = 1 << 11,division = 1 << 12,section = 1 << 13,mc_leadership = majorCommand | leadership,mc_pm = majorCommand | personnelManagement,mc_ua = majorCommand | userAdministrator,mc_su = majorCommand | supervisor,bd_leadership = brigade | leadership,bd_pm = brigade | personnelManagement,bd_su = brigade | supervisor,bd_ua = brigade | userAdministrator,bn_leadership = battalion | leadership,bn_pm = battalion | personnelManagement,bn_su = battalion | supervisor,bn_ua = battalion | userAdministrator,co_leadership = company | leadership,co_pm = company | personnelManagement,co_su = company | supervisor,co_ua = company | userAdministrator,s_leadership = section | leadership,s_pm = section | personnelManagement,s_su = section | supervisor
}

我希望如何进行的示例:

    [AllowRoles(mc_pm,mc_ua)]
    majorCommand = 1 << 8,[AllowRoles(mc_pm,mc_ua,bd_pm,bd_ua)]
    brigade = 1 << 9,bd_ua,cn_pm,bn_ua)]
    battalion = 1 << 10,bn_pm,bn_ua,co_pm,co_ua)]
    company = 1 << 11,co_ua)]
    division = 1 << 12,co_ua)]
    section = 1 << 13,

现在,我知道我可以将枚举分开,但如果没有必要,那会更好。

编辑: 上面的枚举将用于为前端用户管理员制作一个多选列表,以便能够授予特定的权限级别。 0-7 位移位元素是权限,8-13 位移位项是授予每个权限的访问级别。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。