c# - 在 C# Windows 应用程序中存储静态用户数据

标签 c# singleton global-variables

我有一个应用程序需要点击 ActiveDirectory 以在应用程序启动时获得用户权限/角色,并在整个过程中持续存在。

我不想在每个表单上点击 AD 来重新检查用户的权限,所以我希望用户的角色以及登录用户的其他可能数据在应用程序内的任何表单上全局可用,所以我可以在必要时适本地隐藏功能、按钮等。

类似于:

if (UserProperties.Role == Roles.Admin)
{
    btnDelete.Visible = false;
}

在 Windows 应用程序中存储静态用户数据的最佳做法是什么?单例或全局变量等解决方案可能有效,但我试图避免这些。

传递给每个表单的构造函数的用户对象是否同样糟糕?

最佳答案

设置Thread.CurrentPrincipalWindowsPrincipal , 一个 GenericPrincipal或您的自定义委托(delegate)人。然后,您可以调用 IsInRole :

if (Thread.CurrentPrincipal.IsInRole(Roles.Admin)) {
   btnDelete.Visible = false;
}

关于c# - 在 C# Windows 应用程序中存储静态用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273081/

相关文章:

debugging - LuaJIT:脚本访问全局变量多少次?

c# - 从查询字符串中获取 UTC 日期时间

c# Regex.Match 与 .Net Regex Tester 结果不匹配

language-agnostic - 滥用单例类的最常见示例

java - Singleton CDI @Inject 空指针异常

ruby - 检查对象是否具有单例类

php - 在 if 条件下更改全局变量值,然后在 else 中访问该值

python - 通过 C API 在 Python 模块中定义全局变量

c# - linq 按对象分组

c# - 为什么 % 运算符有时输出正数有时输出负数?