首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IPrincipal.IsInRole对PrincipalPermission.Demand?

IPrincipal.IsInRole对PrincipalPermission.Demand?
EN

Stack Overflow用户
提问于 2013-06-06 12:39:33
回答 2查看 816关注 0票数 2

我有个用户和校长。

我知道我可以通过以下方式检查用户是否是管理员:

Thread.CurrentPrincipal.IsInRole("Administrators")

我也看到了这个:

代码语言:javascript
复制
PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
principalPerm.Demand(); //under a try-catch cntext

从我的测试中,它们返回相同的结果。

问题:

  • 是一样的吗?
  • 如果没有,我什么时候应该使用哪一种?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-06 13:32:16

Demand()调用抛出一个异常,如果未捕捉到,该异常将自动升级调用堆栈,IsInRole()调用是一个比较测试,可用于执行一些或者是代码。

它们是否相同:不,一个抛出一个异常,另一个返回一个真/假值。

我应该什么时候使用哪个:如果您想强制终止处理(如果您没有特权),可以使用Demand(),使用IsInRole()来执行条件处理。

票数 3
EN

Stack Overflow用户

发布于 2013-06-06 13:55:22

除了Petesh答案之外,PrincipalPermission还可以通过PrincipalPermissionAttribute声明性地强制执行。

如果您喜欢类似AOP的验证,这可能是一个可行的替代方案。验证代码不会破坏您的业务逻辑,并且运行时会自动应用它。

代码语言:javascript
复制
[PrincipalPermission(...)]
public void Foo()
{ }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16962326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档