在使用resip协议栈的时候我们发现只要将需要鉴权认证设置为true,那么受到的所有消息都会进行鉴权认证,必须等客户端在发送的消息头中添加Authorization字段,并且通过鉴权认证之后才会去进行后续的处理,而很多业务需求中我们只需要让sip协议栈对register消息进行鉴权认证,其余的消息不需要鉴权认证。要达到这个目的很简单,只需要我们编写新类继承自ServerAuthManager类,然后覆盖其requiresChallenge()方法就好了。参考如下:
ServerAuthManager::AsyncBool CDniuServerAuthManger::requiresChallenge(const SipMessage& msg)
{
if (msg.header(h_RequestLine).method() == REGISTER)
{
return True;
}
else
{
return False;
}
}