向netty telnet示例添加身份验证
我对Netty和Java完全陌生,但今天下午我已经基于Netty telnet示例创建了一个聊天服务器。它工作得很好,我使用了“/”斜杠命令,这样人们可以做一些事情,比如设置他们的名字,我现在将其存储在ctx->setAttachment(name)中 我有一个后端数据库服务器,我想与他们连接,这样我就可以通过这种方式获得他们的名字,但我需要先为每个用户添加身份验证。我知道我可以用更多的斜杠命令来完成。但我想看看是否可以使用事件链中的处理程序来完成。让处理程序检查用户是否经过身份验证,如果没有,则执行身份验证逻辑。然后以某种方式存储它们,并对其进行身份验证。如果它们经过身份验证,它将让我当前的聊天处理程序执行它的工作向netty telnet示例添加身份验证,netty,Netty,我对Netty和Java完全陌生,但今天下午我已经基于Netty telnet示例创建了一个聊天服务器。它工作得很好,我使用了“/”斜杠命令,这样人们可以做一些事情,比如设置他们的名字,我现在将其存储在ctx->setAttachment(name)中 我有一个后端数据库服务器,我想与他们连接,这样我就可以通过这种方式获得他们的名字,但我需要先为每个用户添加身份验证。我知道我可以用更多的斜杠命令来完成。但我想看看是否可以使用事件链中的处理程序来完成。让处理程序检查用户是否经过身份验证,如果没有,
任何人都可以提供一些链接或提示这样做吗?我现在对内蒂的了解非常基础。提前谢谢。这要看情况而定。。例如,您可以有一个自定义的SimpleChannelUpstreamHandler来处理身份验证,并在验证完成后将其删除 大概是这样的:
public class AuthHandler extends SimpleChannelUpstreamHandler {
@Override
public void messageReceived( ChannelHandlerContext ctx, MessageEvent e) throws Exception {
if (auth(e)) {
// remove handler after auth was done
ctx.getPipeline().remove(this);
}
}
// Returns true if auth was successfully
private boolean auth(MessageEvent e) {
....
}
}
这要看情况了。。例如,您可以有一个自定义的SimpleChannelUpstreamHandler来处理身份验证,并在验证完成后将其删除 大概是这样的:
public class AuthHandler extends SimpleChannelUpstreamHandler {
@Override
public void messageReceived( ChannelHandlerContext ctx, MessageEvent e) throws Exception {
if (auth(e)) {
// remove handler after auth was done
ctx.getPipeline().remove(this);
}
}
// Returns true if auth was successfully
private boolean auth(MessageEvent e) {
....
}
}
他很有魅力。我曾尝试使用扩展SimpleChannelHandler的处理程序,但它停止了对主处理程序的连接调用。所以它阻止了我创建用户会话。我已经开始编写代码来解决这个问题,但这要简单得多。非常感谢!他很有魅力。我曾尝试使用扩展SimpleChannelHandler的处理程序,但它停止了对主处理程序的连接调用。所以它阻止了我创建用户会话。我已经开始编写代码来解决这个问题,但这要简单得多。非常感谢!