c# - IPrincipal.IsInRole VS PrimaryPermission.Demand?

标签 c# .net security authentication

我有一个Principal 用户。

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

Thread.CurrentPrincipal.IsInRole("管理员")

我也看到了:

PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
principalPerm.Demand(); //under a try-catch cntext

根据我的测试,它们返回相同的结果

问题:

  • 它们是一样的吗?
  • 如果不是,我什么时候应该使用哪个?

最佳答案

Demand() 调用会抛出异常,如果没有捕获到该异常,则会自动向上传播调用堆栈,IsInRole() 调用是一个比较测试,可以用于执行一些非此即彼的代码。

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

什么时候应该使用which:如果您想强制终止处理,请使用Demand(),如果您没有权限,请使用IsInRole()来执行条件处理。

关于c# - IPrincipal.IsInRole VS PrimaryPermission.Demand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962326/

相关文章:

java套接字权限问题

php - 安全地发送 PHP 从 iOS 获取信息

C# MySql DataTable填充数组

c# - 在不破坏封装的情况下公开对象数据

c# - 在运行时实现接口(interface)

c# - 日期时间格式字符串

asp.net-mvc - 所有请求均出现 HTTP 错误 401.2 - 未经授权的响应

c#:从可空类型分配

c# - 何时不使用 lambda 表达式

.net - 如何使用 Windows+m 键盘快捷键最小化我的应用程序?