我正在寻找是否可以在 WPF 中执行以下操作:
用户打开 WPF 应用程序并使用用户 AD 名称,我将检查自定义数据库中的用户角色。这将类似于 asp.net 会员数据库。
根据用户角色,WPF 将显示某些控件。
例如,如果我是管理员,那么我可以访问所有内容,但如果我是只读用户,那么我对应用程序的访问权限将受到限制。
我知道我可以使用以下示例设置可见性:
public class RoleToVisibilityConverter : MarkupExtension,IValueConverter
{
public RoleToVisibilityConverter()
{
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var principal = value as GenericPrincipal;
bool IsValidUser = false;
if (principal != null)
{
foreach (String role in parameter.ToString().Split(';'))
{
if (principal.IsInRole(role))
{
IsValidUser = true;
break;
}
}
return IsValidUser ? Visibility.Visible : Visibility.Collapsed;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
在 XAML 中,我为 Visibility 添加了以下绑定:
Visibility="{Binding Source={x:Static systhread:Thread.CurrentPrincipal}, ConverterParameter=admin;editor;readonly, Converter={rv:RoleToVisibilityConverter}}
但我想做的是不必在 xaml 中添加它。
我希望能够获得用户角色及其所有权限,并根据窗口加载 UI 权限。
原因是我希望能够更改只读角色可以看到/执行的操作,而无需更改 xaml。
有谁知道这是否可行,如果可以,这是最佳做法。
提前致谢。
诺埃尔