2

我对 Netty 和 Java 完全陌生,但是今天下午我设法创建了一个基于 Netty telnet 示例的聊天服务器。它工作得很好,我有'/'斜杠命令工作,所以人们可以做一些事情,比如设置他们的名字,我目前存储在 ctx->setAttachment(name) 中。

我有一个后端数据库服务器,我想将它们连接起来,这样我就可以通过这种方式获取它们的名称,但我需要先为每个用户添加身份验证。我知道我可以用更多的斜杠命令来做到这一点。但我想看看是否可以使用事件链中的处理程序来做到这一点。有一个处理程序来检查用户是否经过身份验证,如果没有,则执行验证他们的逻辑。然后以某种方式存储它们经过身份验证。如果他们通过了身份验证,它会让我当前的聊天处理程序代替它工作。

谁能提供一些这样做的链接或提示?我现在对 Netty 的了解非常基础。提前致谢。

4

1 回答 1

4

这真的取决于.. 例如,您可以有一个自定义的 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) {
        ....
    }
}
于 2012-04-13T06:07:26.160 回答