MVC中基于开关的权限处理

时间:2014-04-13 15:10:29

标签: c# .net permissions

我一直在努力解决arcitecture,因为我正在构建一个应用程序。基本上它包含网页上每个不同视图的权限。

例如,网站服务部分的权限如下所示:

public bool ServiceView { get; set; }
public bool ServiceEdit { get; set; }
public bool ServiceCreate { get; set; }
public bool ServiceDelete { get; set; }

ServiceView允许您查看服务,ServiceEdit允许您编辑服务,等等。

要检查用户是否拥有权限,我首先想到的是构建一个嵌套的switch-case,如下所示:

public bool IsAuthorized(string controller, string action)
{
    switch (controller)
    {
        case "Customer":
            switch (action)
            {
                case "Index":
                case "Details": return CustomerView;
                case "Edit": return CustomerEdit;
                case "Create": return CustomerCreate;
                case "Delete": return CustomerDelete;
            }
        case "Service":
            switch (action)
            {
                case "Index":
                case "Details": return ServiceView;
                case "Edit": return ServiceEdit;
                case "Create": return ServiceCreate;
                case "Delete": return ServiceDelete;
            }
        default: return false;
    }
}

然而,这对我来说似乎真的很难看,所以我想知道是否有人有任何关于更简单且可能更美好的方式的提示?

我一直在谷歌上搜索一下以获得灵感,并且遇到了一种基于反射的方式,您尝试将字符串与属性匹配。可能是更好的方式吗?

以下是一些相关的链接,并没有真正给我我正在寻找的答案:
1. This related thread,它并没有真正详细介绍 2. Another related thread,既没有详细说明,也没有接受答案是基于角色的 3. this thread的答案是另一种可以处理的方式。

非常感谢任何帮助。

干杯!

0 个答案:

没有答案