gpt4 book ai didi

wcf - 声明感知 Web 服务之上的 MVVM

转载 作者:行者123 更新时间:2023-12-03 10:30:58 25 4
gpt4 key购买 nike

我正在为我目前面临的挑战寻找一些意见。

我已经构建了一个自定义 WIF STS,我用它来识别想要调用我的系统提供的某些 WCF 服务的用户。 WCF 服务使用自定义授权管理器来确定调用者是否具有调用给定服务所需的声明。

现在,我正在构建一个 WPF 应用程序。在这些 WCF 服务之上。我正在使用 MVVM 模式,以便 View 模型调用 protected WCF 服务(实现模型)。我面临的挑战是我不知道当前用户是否可以成功调用 Web 服务方法而不实际调用它们。基本上,我想要实现的是基于成功调用方法的能力启用/禁用 UI 的某些部分。

到目前为止,我提出的最佳解决方案是创建一个服务,该服务基于与自定义授权策略管理器相同的业务逻辑,能够确定用户是否可以调用给定方法。现在,该方法必须作为一个字符串传递给该服务,或者实际上是两个字符串,ServiceAddress 和 Method (Action),并且基于该输入,该服务将能够确定当前用户是否具有访问所需的声明方法。显然,要使其工作,该服务本身必须需要来自相同 STS 并具有相同声明的已发行 token 才能完成其工作。

你们中的任何人过去有没有做过类似的事情,或者你们对如何做到这一点有什么好主意?

提前致谢,

克劳斯

最佳答案

这在一定程度上取决于您在服务中需要什么声明。

如果您的服务需要相同的声明集,我建议您创建一个除了检查声明之外什么都不做的服务,并提前调用。这将使您“预授权”用户,进而启用/禁用 UI 的适当部分。当需要调用您的实际服务时,用户可以随意调用它们,并且您已经检查过它是否安全。

如果服务都需要不同的声明集,并且没有简单的方法来验证它们是否会提前工作,我只会让用户调用它们,并通过正常的异常处理来处理。但是,这将使生活变得更加棘手,因为您必须让用户尝试(并失败)然后禁用。

否则,您可以执行您建议的操作 - 放入某种形式的目录,您可以查询特定用户。除了仅传递地址/方法之外,允许您仅传递地址并检索整个允许(或不允许,以较小者为准)方法集可能会更好。这样,您可以减少仅用于身份验证的往返行程。

关于wcf - 声明感知 Web 服务之上的 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com