我希望尽可能简单,所以我没有发布任何代码,因为它可能只是混淆了事情。带有角色的WCF PrincipalPermission,为子方法配置
我在我的应用程序中使用WCF的基于角色的授权实现了安全性。
假设我有我的公开曝光接口
- GetPerson 4种方法
- deletePerson的
- 的updatePerson
- GetSurnameAndForename
我已附上
[PrincipalPermission(SecurityAction.Demand,Role="POWERUSER")]
到第一3和
[PrincipalPermission(SecurityAction.Demand,Role="GENERALUSER")]
到最后一个。
这工作正常,并阻止'GENERALUSER'访问前3个方法。
但是,GetSurnameAndForename方法在内部调用GetPerson方法,该方法失败。我明白为什么它失败了,但是有没有一种首选的方法可以让GetSurnameAndForename在没有POWERUSER角色的情况下调用GetPerson?
我能想到做到这一点的唯一方法是在IsInRole方法中添加一个额外的检查来检查CallStack以查看此调用是来自内部方法还是外部调用。这个解决方案有效,但它不是很优雅。
谢谢,现在你说得很明显。今天在我的大脑里发出咔哒咔哒的声音,有时你看不到树林里的木头......再次感谢! –