我有个用户和校长。
我知道我可以通过以下方式检查用户是否是管理员:
Thread.CurrentPrincipal.IsInRole("Administrators")
我也看到了这个:
PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
principalPerm.Demand(); //under a try-catch cntext从我的测试中,它们返回相同的结果。
问题:
发布于 2013-06-06 13:32:16
Demand()调用抛出一个异常,如果未捕捉到,该异常将自动升级调用堆栈,IsInRole()调用是一个比较测试,可用于执行一些或者是代码。
它们是否相同:不,一个抛出一个异常,另一个返回一个真/假值。
我应该什么时候使用哪个:如果您想强制终止处理(如果您没有特权),可以使用Demand(),使用IsInRole()来执行条件处理。
发布于 2013-06-06 13:55:22
除了Petesh答案之外,PrincipalPermission还可以通过PrincipalPermissionAttribute声明性地强制执行。
如果您喜欢类似AOP的验证,这可能是一个可行的替代方案。验证代码不会破坏您的业务逻辑,并且运行时会自动应用它。
[PrincipalPermission(...)]
public void Foo()
{ }https://stackoverflow.com/questions/16962326
复制相似问题