gpt4 book ai didi

c# - 自定义代码访问权限

转载 作者:行者123 更新时间:2023-11-30 15:48:29 28 4
gpt4 key购买 nike

我们有一个用 C# (Framework 3.5 SP1) 编写的服务器。客户使用我们的服务器 API 编写客户端应用程序。最近,我们创建了几个级别的许可方案,如基本、中级和全部。如果您拥有 Basic 许可证,那么您可以在我们的 API 上调用一些方法。同样,如果您拥有 Intermediate,您将获得一些额外的方法来调用,如果您拥有 All,则您可以调用所有方法。

当服务器启动时,它会获取许可证类型。现在,在每种方法中,我都必须检查许可证类型,并决定是继续执行该功能还是返回。

例如,InterMediateMethod() 方法只能由 Intermediate License 和 All license 使用。所以我必须做这样的事情。

public void InterMediateMethod()
{
if(licenseType == "Basic")
{
throw new Exception("Access denied");
}
}

在我看来,这是一种非常蹩脚的方法。有没有更好的方法来做到这一点?有没有通过定义一些自定义属性来实现这一点的声明方式?我查看了创建自定义 CodeAccessSecurityAttribute 但没有取得很好的成功。

最佳答案

由于您在每个方法中都添加了“if”逻辑(天知道还有什么),您可能会发现使用 PostSharp 更容易(AOP 框架)实现相同,但就我个人而言,我不喜欢这两种方法中的任何一种......

我认为如果你为每个许可证维护三个不同的分支(源代码)会更干净,这可能会增加一些维护方面的开销(也许不会),但至少保持干净和简单。

我也很感兴趣其他人对此有何评论。

好文章,我喜欢...

关于c# - 自定义代码访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562745/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com