Flex 消息安全

发布于 2024-07-21 12:29:02 字数 255 浏览 1 评论 0原文

我正在尝试为 Flex 应用程序创建一个模块,并且我想向客户端发送通知。 我一直在研究 BlazeDS 消息服务来向客户端推送通知,但我希望能够向某些客户端发送某些更新。 Flex 通知框架似乎不允许这样做 - 例如,如果消息中有一个值为用户的用户 ID 的字段,则理论上任何客户端都可以订阅任何给定用户 ID 的所有消息,并且没有验证服务器端以确保已订阅的客户端以该用户 ID 登录。

我在这里错过了什么,或者是在客户端编写我自己的轮询机制来处理这个问题的最佳方法?

I'm trying to create a module for a flex application, and I want to send notifications to clients. I've been looking at the BlazeDS messaging service to push out the notifications to clients, but I want to be able to send certain updates to certain clients. The Flex notification framework doesn't seem to allow this - if we have a field in the message with a value of the user's user id for example, any client could theoretically subscribe to all messages for any given user id, and there's no verification on the server side to make sure that the client that has subscribed is logged in as that user id.

Is there something I've missed here, or is the best way to handle this writing my own polling mechanism on the client side?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

踏月而来 2024-07-28 12:29:02

API 中确实有解决方案。 第一步是编写一个扩展 FlexClientOutboundQueueProcessor 类的类。 您需要重写一个方法:

public void add(List outboundQueue, Message message);

基本上您需要做的就是编写一些逻辑来确定是否应该进行以下调用:

outboundQueue.add(message)

简单地说,如果您不将消息添加到队列,则消息不会被推送给客户。 此类中的另一个重要方法是:

FlexClient getFlexClient()

您可以使用它来获取关联的 FlexSession 以及最终可能存在于您的应用程序中的身份验证信息。

完成此操作后,您只需向适当的通道注册处理器即可。 只需将此元素添加到“channel-definition”元素的“properties”元素中:

<flex-client-outbound-queue-processor class="com.foo.YourProcessor"/>

我相信您还可以为队列处理器指定嵌套的“properties”元素,但我不认为这是必需的。

There is indeed a solution for this in the APIs. The first step is to write a class which extends the FlexClientOutboundQueueProcessor class. You need to override one method:

public void add(List outboundQueue, Message message);

Basically all you need to do is write some logic to determine whether you should make the following call:

outboundQueue.add(message)

Simply put, if you don't add the message to the queue, then the message won't be pushed to the client. The other important method in this class is:

FlexClient getFlexClient()

Which you can use to get the associated FlexSession and ultimately the authentication information that presumably exists in your app.

Once this is done, you just need to register the processor with the appropriate channels. Simply add this element within the "properties" element of the "channel-definition" element:

<flex-client-outbound-queue-processor class="com.foo.YourProcessor"/>

I believe you can also specify a nested "properties" element for the queue processor but I don't believe it's required.

海的爱人是光 2024-07-28 12:29:02

您可以使用子主题,只要您 禁用通配符订阅

You can use subtopics for this as long as you disable wildcard subscriptions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文