WPFで次のことができるかどうかを確認しています。
ユーザーが WPF アプリケーションを開き、ユーザーの AD 名を使用して、カスタム DB でユーザーの役割を確認します。これは、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="{Binding Source={x:Static systhread:Thread.CurrentPrincipal}, ConverterParameter=admin;editor;readonly, Converter={rv:RoleToVisibilityConverter}}
しかし、私がやりたいのは、これを xaml に追加する必要がないことです。
ユーザーの役割とそのすべての権限を取得し、ウィンドウに応じて UI 権限をロードできるようにしたいと考えています。
理由は、xaml を変更せずに、読み取り専用ロールが表示/実行できる内容を変更できるようにしたいからです。
これが可能かどうかは誰にもわかりますか?もしそうなら、それはベストプラクティスです.
前もって感謝します。
ノエル