Thi*_*ies 8 c# security wpf xaml identity
我使用.NET的IIdentity和IPrincipal对象来实现基于角色的安全性,我正在修改基于当前用户所拥有的角色显示的控件.
我的问题是推荐的方法是在WPF窗口中启用/禁用字段 - 显示/隐藏依赖于IIdentity.IsInRole类型调用的字段.
这可以在XAML中完成,还是我必须将其抽象为代码,我认为后面的代码有点混乱;
this.txtUserName.IsReadOnly = !MyPrincipal.CurrentPrincipal.IsInRole("Administrator");
this.mnuCreateUser.Visibility = MyPrincipal.CurrentPrincipal.IsInRole("Administrator");
? Visibility.Hidden : Visibility.Visible;
Run Code Online (Sandbox Code Playgroud)
(注意;我的代码在执行函数时检查角色,我要做的是根据角色修改GUI,因此用户不会看到/看到他们无权访问的只读元素)
Ser*_*jev 17
虽然以前的答案是有效的,但对我来说,检测逻辑对象的可见性看起来很难看.我会用转换器......
<Control Visibility={Binding Path=CurrentPrincipal, Converter={StaticResource RoleToVisibilityConverter}, ConverterParameter=Administrator}/>
Run Code Online (Sandbox Code Playgroud)
然后是转换器本身
public class RoleToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var principal = value as Principal;
if(principal != null) {
return principal.IsInRole((string)parameter) ? Visibility.Visible : Visibility.Collapsed;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9700 次 |
| 最近记录: |