我有一个应用程序需要点击 ActiveDirectory 以在应用程序启动时获得用户权限/角色,并在整个过程中持续存在。
我不想在每个表单上点击 AD 来重新检查用户的权限,所以我希望用户的角色以及登录用户的其他可能数据在应用程序内的任何表单上全局可用,所以我可以在必要时适本地隐藏功能、按钮等。
类似于:
if (UserProperties.Role == Roles.Admin)
{
btnDelete.Visible = false;
}
在 Windows 应用程序中存储静态用户数据的最佳做法是什么?单例或全局变量等解决方案可能有效,但我试图避免这些。
传递给每个表单的构造函数的用户对象是否同样糟糕?
最佳答案
设置Thread.CurrentPrincipal与 WindowsPrincipal , 一个 GenericPrincipal或您的自定义委托(delegate)人。然后,您可以调用 IsInRole :
if (Thread.CurrentPrincipal.IsInRole(Roles.Admin)) {
btnDelete.Visible = false;
}
关于c# - 在 C# Windows 应用程序中存储静态用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273081/