问题描述
我的聊天服务器必须允许匿名用户读取所有聊天消息的访问权限,但拒绝发送到目的地,只有具有一定权限的用户才能允许访问
。尽管我成功地使用自己的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 (将#修改为@)