现代WPF授权(替换PrincipalPermission属性)

问题描述 投票:0回答:1

一旦有人开始在 net6.0-windows 或 .net8.0-windows 中编写 WPF 应用程序,他们必须通过哪些方式来实现授权。

切换按钮的 IsVisible 属性或切换 IsEnabled。

研究表明旧版本中存在PrincipalPermission属性,但不再支持。

有趣的是,有大量示例/教程展示了如何实现身份验证,但它们没有展示如何对经过身份验证的用户执行任何操作(除了将令牌发送到外部服务之外)。

是否有如何在 WPF 中实现授权的最佳实践/示例?

c# wpf .net-6.0 .net-7.0 .net-8.0
1个回答
0
投票

您仍然可以按照

此博文
中的建议使用自定义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...
}
© www.soinside.com 2019 - 2024. All rights reserved.