@@ -85,41 +85,56 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
8585 if (st_AuthConfig.st_XApiVer .bEnable )
8686 {
8787 int nVType = 0 ;
88- XCHAR tszUserName[64 ] = {};
89- XCHAR tszUserPass[64 ] = {};
9088 RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
9189
9290 st_HDRParam.nHttpCode = 401 ;
9391 st_HDRParam.bIsClose = true ;
94-
92+ // 打包验证信息
93+ int nHDRLen = 0 ;
94+ XCHAR tszHDRBuffer[XPATH_MAX] = {};
95+ if (1 == st_AuthConfig.st_XApiVer .nVType )
96+ {
97+ Verification_HTTP_BasicServerPacket (tszHDRBuffer, &nHDRLen);
98+ }
99+ else
100+ {
101+ XCHAR tszNonceStr[64 ] = {};
102+ XCHAR tszOpaqueStr[64 ] = {};
103+ Verification_HTTP_DigestServerPacket (tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr);
104+ }
105+ // 后去验证方法
95106 if (!Verification_HTTP_GetType (pptszListHdr, nHdrCount, &nVType))
96107 {
97- int nHDRLen = 0 ;
98- XCHAR tszHDRBuffer[XPATH_MAX] = {};
99- if (1 == st_AuthConfig.st_XApiVer .nVType )
100- {
101- Verification_HTTP_BasicServerPacket (tszHDRBuffer, &nHDRLen);
102- }
103- else
104- {
105- XCHAR tszNonceStr[64 ] = {};
106- XCHAR tszOpaqueStr[64 ] = {};
107- Verification_HTTP_DigestServerPacket (tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr);
108- }
109108 HttpProtocol_Server_SendMsgEx (xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL , 0 , tszHDRBuffer);
110109 NetCore_TCPXCore_SendEx (xhHttpSocket, lpszClientAddr, tszSDBuffer, nSDLen);
111110 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX" ), lpszClientAddr, st_AuthConfig.st_XApiVer .nVType , AuthHelp_GetLastError ());
112111 return false ;
113112 }
113+ // 验证方式是否一致
114+ if (st_AuthConfig.st_XApiVer .nVType != nVType)
115+ {
116+ HttpProtocol_Server_SendMsgEx (xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL , 0 , tszHDRBuffer);
117+ NetCore_TCPXCore_SendEx (xhHttpSocket, lpszClientAddr, tszSDBuffer, nSDLen);
118+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d" ), lpszClientAddr, nVType, st_AuthConfig.st_XApiVer .nVType );
119+ return false ;
120+ }
121+ bool bRet = false ;
114122 if (1 == nVType)
115123 {
116- Verification_HTTP_Basic (tszUserName, tszUserPass, pptszListHdr, nHdrCount);
124+ bRet = Verification_HTTP_Basic (st_AuthConfig. st_XApiVer . tszUserName , st_AuthConfig. st_XApiVer . tszUserPass , pptszListHdr, nHdrCount);
117125 }
118126 else if (2 == nVType)
119127 {
120- Verification_HTTP_Digest (" 123123aa" , " 123123" , pSt_HTTPParament->tszHttpMethod , pptszListHdr, nHdrCount);
128+ bRet = Verification_HTTP_Digest (st_AuthConfig.st_XApiVer .tszUserName , st_AuthConfig.st_XApiVer .tszUserPass , pSt_HTTPParament->tszHttpMethod , pptszListHdr, nHdrCount);
129+ }
130+ if (!bRet)
131+ {
132+ HttpProtocol_Server_SendMsgEx (xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL , 0 , tszHDRBuffer);
133+ NetCore_TCPXCore_SendEx (xhHttpSocket, lpszClientAddr, tszSDBuffer, nSDLen);
134+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d" ), lpszClientAddr, nVType);
135+ return false ;
121136 }
122- XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,验证通过,用户名:%s,密码:%s " ), lpszClientAddr, tszUserName, tszUserPass );
137+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,HTTP验证类型:%d 通过 " ), lpszClientAddr, nVType );
123138 }
124139
125140 if (0 == _tcsxnicmp (lpszMethodPost, pSt_HTTPParament->tszHttpMethod , _tcsxlen (lpszMethodPost)))
0 commit comments