C# 如何设计一个系统来过滤角色请求?
我需要设计一个基于WCF服务的系统来过滤C中角色的请求# 我如何创建一个系统,在这个系统中,我可以将这些accesscontrols转换成散列或计算出的数学值,这样我就不必像这样进行多次检查C# 如何设计一个系统来过滤角色请求?,c#,roles,roleprovider,security-roles,C#,Roles,Roleprovider,Security Roles,我需要设计一个基于WCF服务的系统来过滤C中角色的请求# 我如何创建一个系统,在这个系统中,我可以将这些accesscontrols转换成散列或计算出的数学值,这样我就不必像这样进行多次检查 If(user = RequestUser.Role.User||user = RequestUser.Role.Admin) {} 相反,你可以这样做 Resource AccessControl someCalculatedHashValue X U
If(user = RequestUser.Role.User||user = RequestUser.Role.Admin)
{}
相反,你可以这样做
Resource AccessControl someCalculatedHashValue
X User,SuperUser,Admin ????
Y Admin ????
Z Admin ????
if(user >= someCalculatedHashValue){}
注意:可能存在一对多关系您不能为您的角色使用位向量(即标志枚举)吗
通过这种方式,您可以简单地将这些位相加为“hash”。您可以通过包装您描述的排名逻辑来创建实现IsInRole的自定义实现
现在我仔细看看您的问题,它听起来非常像基于ACL的安全性,而不是基于角色的安全性。您可能需要进行更改。您未能提供有关系统的详细信息。根据所使用的技术,已经有经过验证和众所周知的技术来管理(例如,WCF为您提供了“免费”的技术) 这些示例可能也不完整,因为您呈现它的方式 用户、超级用户、管理员
管理员
管理员
这可以通过一个简单的枚举、一个int比较和一个如下枚举来处理:
public enum Role {
Anonymous,
User,
SuperUser,
Admin
}
if (user >= (int)Role.User) ...
但这可能太简单了,不能满足你的真正需要?简而言之:您能详细说明一下吗?用户是否只有一个角色?假设这是在WCF中完成的,有什么现成的功能?WCF允许您根据您的设计以声明方式(无if语句)进行授权。如果您想/需要在代码中完成,它也支持您,但您最终会遇到同样的问题,必须将角色映射到操作。因此,在这一点上,你回到你的“如果一团糟”或回到开始。您可以查看枚举,也可以探索是否可以将逻辑提取到扩展方法或类似的方法中,以实现访问权限和角色/用户之间的映射。
public enum Role {
Anonymous,
User,
SuperUser,
Admin
}
if (user >= (int)Role.User) ...