vert.x STOMP服务器的授权

问题描述

我的聊天服务器必须允许匿名用户读取所有聊天消息的访问权限,但拒绝发送到目的地,只有具有一定权限的用户才能允许访问

尽管我成功地使用自己的AuthProvider设置了演示服务器和客户端,但是在DefaultStompHandler中看不到任何支持检查用户权限以进行任何类型帧处理的支持

似乎可行的解决方案是创建我自己的SendHandler,该检查将执行此检查(科特琳代码):

    stompServerHandler.sendHandler(AuthSendHandler(stompServerHandler))

和处理程序本身:

    class AuthSendHandler(
            private val stompServerHandler: StompServerHandler
    ) : DefaultSendHandler() {
    
        override fun handle(sf: ServerFrame) {
            val sessionId = sf.connection().session()
            println("Handling ${sf.frame().command},bro! Session: " + sessionId)
            val user = stompServerHandler.getUserBySession(sessionId)
    
            user.isAuthorised("thisX") { ar ->
                if (ar.result()) {
                    println("User authorised,continuing...")
                    super.handle(sf)
                }
                else {
                    println("User not authorised,rejecting...")
                    val destination = sf.frame().getHeader(Frame.DESTINATION)
                    val errorFrame = Frames.createErrorFrame(
                            "Not authorised",Headers.create(Frame.DESTINATION,destination),"Message delivery Failed - not authorised")
                    sf.connection().write(errorFrame)
                    sf.connection().close()
                }
            }
        }
    }

这是要走的路吗?还是我缺少一些基本/现有功能?我是vert.x的新手,刚从昨天开始

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)