一旦有人开始在 net6.0-windows 或 .net8.0-windows 中编写 WPF 应用程序,他们必须通过哪些方式来实现授权。
切换按钮的 IsVisible 属性或切换 IsEnabled。
研究表明旧版本中存在PrincipalPermission属性,但不再支持。
有趣的是,有大量示例/教程展示了如何实现身份验证,但它们没有展示如何对经过身份验证的用户执行任何操作(除了将令牌发送到外部服务之外)。
是否有如何在 WPF 中实现授权的最佳实践/示例?
您仍然可以按照
此博文中的建议使用自定义
IPrincipal
实现:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
CustomPrincipal customPrincipal = new CustomPrincipal();
customPrincipal.Identity = ...
AppDomain.CurrentDomain.SetThreadPrincipal(customPrincipal);
...
}
}
此接口并不被弃用,只是因为
PrincipalPermissionAttribute
和代码访问安全性 (CAS) 被弃用。
然后,您可以在视图模型或视图中执行命令式安全检查:
private void ProtectedMethod()
{
if (!Thread.CurrentPrincipal.IsInRole("admin"))
throw new UnauthorizedAccessException();
//do admin stuff...
}