@@ -637,7 +637,7 @@ bool CSession_Token::Session_Token_DeleteStr(LPCXSTR lpszToken)
637637 st_Locker.unlock ();
638638 return true ;
639639}
640- bool CSession_Token::Session_Token_UPDateStr (LPCXSTR lpszToken)
640+ bool CSession_Token::Session_Token_UPDateStr (LPCXSTR lpszToken, LPCXSTR lpszRefreshToken /* = NULL */ , LPCXSTR lpszNewToken /* = NULL */ )
641641{
642642 Session_IsErrorOccur = false ;
643643
@@ -652,7 +652,29 @@ bool CSession_Token::Session_Token_UPDateStr(LPCXSTR lpszToken)
652652 }
653653 stl_MapIterator->second .nRenewalTime ++;
654654 BaseLib_Time_GetSysTime (&stl_MapIterator->second .st_OutTimer );
655- st_Locker.unlock_shared ();
655+ // 判断类型
656+ if (1 == stl_MapIterator->second .nTokenType )
657+ {
658+ // 判断刷新token是否一致
659+ if (0 != _tcsxnicmp (stl_MapIterator->second .st_TokenInfo .tszTokenRefresh , lpszRefreshToken, _tcsxlen (lpszRefreshToken)))
660+ {
661+ Session_IsErrorOccur = true ;
662+ Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_TOKEN;
663+ st_Locker.unlock_shared ();
664+ return false ;
665+ }
666+ st_Locker.unlock_shared ();
667+ // OAuth2类型需要重置
668+ st_Locker.lock ();
669+ TOKENSESSION_INFOCLIENT st_ClientInfo = std::move (stl_MapIterator->second ); // 取出旧的值
670+ stl_MapTokenStr.erase (stl_MapIterator); // 删除旧 key
671+ stl_MapTokenStr.emplace (lpszNewToken, std::move (st_ClientInfo)); // 插入新 key
672+ st_Locker.unlock ();
673+ }
674+ else
675+ {
676+ st_Locker.unlock_shared ();
677+ }
656678 return true ;
657679}
658680bool CSession_Token::Session_Token_GetStr (LPCXSTR lpszToken, XENGINE_PROTOCOL_USERINFO* pSt_UserInfo /* = NULL */ )
@@ -828,6 +850,55 @@ bool CSession_Token::Session_Token_GetListStr(XCHAR*** ppptszToken, int* pInt_Li
828850
829851 return true ;
830852}
853+ bool CSession_Token::Session_Token_OAuthSetInfo (LPCXSTR lpszToken, VERIFICATION_OAUTHINFO* pSt_OAuthInfo)
854+ {
855+ Session_IsErrorOccur = false ;
856+
857+ if ((NULL == lpszToken) || (NULL == pSt_OAuthInfo))
858+ {
859+ Session_IsErrorOccur = true ;
860+ Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_PARAMENT;
861+ return false ;
862+ }
863+ st_Locker.lock_shared ();
864+ auto stl_MapIterator = stl_MapTokenStr.find (lpszToken);
865+ if (stl_MapIterator == stl_MapTokenStr.end ())
866+ {
867+ st_Locker.unlock_shared ();
868+ Session_IsErrorOccur = true ;
869+ Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_NOTFOUND;
870+ return false ;
871+ }
872+ stl_MapIterator->second .nTokenType = 1 ;
873+ stl_MapIterator->second .st_OAuthInfo = *pSt_OAuthInfo;
874+ st_Locker.unlock_shared ();
875+ return true ;
876+ }
877+ bool CSession_Token::Session_Token_OAuthSetToken (LPCXSTR lpszToken, VERIFICATION_TOKENINFO* pSt_TokenInfo)
878+ {
879+ Session_IsErrorOccur = false ;
880+
881+ if ((NULL == lpszToken) || (NULL == pSt_TokenInfo))
882+ {
883+ Session_IsErrorOccur = true ;
884+ Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_PARAMENT;
885+ return false ;
886+ }
887+ st_Locker.lock_shared ();
888+ auto stl_MapIterator = stl_MapTokenStr.find (lpszToken);
889+ if (stl_MapIterator == stl_MapTokenStr.end ())
890+ {
891+ st_Locker.unlock_shared ();
892+ Session_IsErrorOccur = true ;
893+ Session_dwErrorCode = ERROR_XENGINE_MODULE_SESSION_TOKEN_NOTFOUND;
894+ return false ;
895+ }
896+ stl_MapIterator->second .st_TokenInfo = *pSt_TokenInfo;
897+ // 影响过期时间
898+ stl_MapIterator->second .nTimeout = pSt_TokenInfo->nExpiredTime ; // 更新超时时间
899+ st_Locker.unlock_shared ();
900+ return true ;
901+ }
831902// ////////////////////////////////////////////////////////////////////////
832903// 线程函数
833904// ////////////////////////////////////////////////////////////////////////
0 commit comments