我对Netty和Java完全不熟悉,但是今天下午我已经设法创建了一个基于Netty telnet示例的聊天服务器。它运行良好,我有'/'斜杠命令工作,所以人们可以做一些事情,比如设置我目前存储在ctx-> setAttachment(name)中的名字。
我有一个后端数据库服务器我想连接它们所以我可以这样得到他们的名字,但我需要先为每个用户添加身份验证。我知道我可以用更多的斜杠命令来做到这一点。但我想知道我是否可以使用事件链中的处理程序来完成它。有一个处理程序来检查用户是否经过身份验证,如果用户未经过身份验证,那么是否有用于验证用户身份的逻辑。然后以某种方式存储他们被认证。如果它们经过身份验证,则可以让我当前的聊天处理程序完成其工作。
有人可以提供一些链接或提示吗?我对Netty的了解现在非常基础。提前谢谢。
答案 0 :(得分: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) {
....
}
}