Skip to content

Commit 691228f

Browse files
committed
added:auto renewal token
1 parent bd8481a commit 691228f

File tree

6 files changed

+89
-4
lines changed

6 files changed

+89
-4
lines changed

XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.def

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ EXPORTS
1717
Session_Token_Delete
1818
Session_Token_UPDate
1919
Session_Token_Get
20-
Session_Token_GetUser
20+
Session_Token_GetUser
21+
Session_Token_RenewalTime

XEngine_Source/AuthorizeModule_Session/Session_Define.h

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,23 @@ extern "C" bool Session_Token_Get(XNETHANDLE xhToken, AUTHREG_USERTABLE* pSt_Use
287287
意思:是否成功
288288
备注:
289289
*********************************************************************/
290-
extern "C" bool Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, XNETHANDLE * pxhToken);
290+
extern "C" bool Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, XNETHANDLE * pxhToken);
291+
/********************************************************************
292+
函数名称:Session_Token_RenewalTime
293+
函数功能:续期时间
294+
参数.一:xhToken
295+
In/Out:In
296+
类型:句柄
297+
可空:N
298+
意思:输入要操作的TOKEN
299+
参数.二:pInt_RenewalTime
300+
In/Out:Out
301+
类型:整数型指针
302+
可空:N
303+
意思:输出续期的次数
304+
返回值
305+
类型:逻辑型
306+
意思:是否成功
307+
备注:
308+
*********************************************************************/
309+
extern "C" bool Session_Token_RenewalTime(XNETHANDLE xhToken, int* pInt_RenewalTime);

XEngine_Source/AuthorizeModule_Session/Session_Token/Session_Token.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,42 @@ bool CSession_Token::Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, X
287287
}
288288
return true;
289289
}
290+
/********************************************************************
291+
函数名称:Session_Token_RenewalTime
292+
函数功能:续期时间
293+
参数.一:xhToken
294+
In/Out:In
295+
类型:句柄
296+
可空:N
297+
意思:输入要操作的TOKEN
298+
参数.二:pInt_RenewalTime
299+
In/Out:Out
300+
类型:整数型指针
301+
可空:N
302+
意思:输出续期的次数
303+
返回值
304+
类型:逻辑型
305+
意思:是否成功
306+
备注:
307+
*********************************************************************/
308+
bool CSession_Token::Session_Token_RenewalTime(XNETHANDLE xhToken, int* pInt_RenewalTime)
309+
{
310+
Session_IsErrorOccur = false;
311+
312+
st_Locker.lock_shared();
313+
unordered_map<XNETHANDLE, AUTHSESSION_TOKENCLIENT>::iterator stl_MapIterator = stl_MapToken.find(xhToken);
314+
if (stl_MapIterator == stl_MapToken.end())
315+
{
316+
Session_IsErrorOccur = true;
317+
Session_dwErrorCode = ERROR_AUTHORIZE_MODULE_SESSION_PARAMENT;
318+
st_Locker.unlock_shared();
319+
return false;
320+
}
321+
stl_MapIterator->second.nRenewalTime++;
322+
*pInt_RenewalTime = stl_MapIterator->second.nRenewalTime;
323+
st_Locker.unlock_shared();
324+
return true;
325+
}
290326
//////////////////////////////////////////////////////////////////////////
291327
// 线程函数
292328
//////////////////////////////////////////////////////////////////////////

XEngine_Source/AuthorizeModule_Session/Session_Token/Session_Token.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ typedef struct
1515
AUTHREG_USERTABLE st_UserTable; //用户表
1616
XENGINE_LIBTIMER st_LibTimer; //登录时间结构
1717
int nTimeout; //单独指定超时
18+
int nRenewalTime; //自动续期次数
1819
}AUTHSESSION_TOKENCLIENT, * LPAUTHSESSION_TOKENCLIENT;
1920
//////////////////////////////////////////////////////////////////////////
2021
class CSession_Token
@@ -30,6 +31,7 @@ class CSession_Token
3031
bool Session_Token_UPDate(XNETHANDLE xhToken);
3132
bool Session_Token_Get(XNETHANDLE xhToken, AUTHREG_USERTABLE* pSt_UserTable = NULL);
3233
bool Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, XNETHANDLE* pxhToken);
34+
bool Session_Token_RenewalTime(XNETHANDLE xhToken, int* pInt_RenewalTime);
3335
protected:
3436
static XHTHREAD Session_Token_Thread(XPVOID lParam);
3537
private:

XEngine_Source/AuthorizeModule_Session/pch.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,8 @@ extern "C" bool Session_Token_Get(XNETHANDLE xhToken, AUTHREG_USERTABLE * pSt_Us
8989
extern "C" bool Session_Token_GetUser(LPCXSTR lpszUser, LPCXSTR lpszPass, XNETHANDLE * pxhToken)
9090
{
9191
return m_SessionToken.Session_Token_GetUser(lpszUser, lpszPass, pxhToken);
92+
}
93+
extern "C" bool Session_Token_RenewalTime(XNETHANDLE xhToken, int* pInt_RenewalTime)
94+
{
95+
return m_SessionToken.Session_Token_RenewalTime(xhToken, pInt_RenewalTime);
9296
}

XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,33 @@ void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserNam
6363
}
6464
void CALLBACK XEngine_TaskEvent_Token(XNETHANDLE xhToken, XPVOID lParam)
6565
{
66+
bool bRemove = true;
6667
AUTHREG_USERTABLE st_UserTable;
6768
memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE));
6869

6970
Session_Token_Get(xhToken, &st_UserTable);
70-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Token:%lld,用户名:%s,已经超时,权限级别:%d,被移除服务器"), xhToken, st_UserTable.st_UserInfo.tszUserName, st_UserTable.st_UserInfo.nUserLevel);
71-
Session_Token_Delete(xhToken);
71+
//自动续期?
72+
if (st_AuthConfig.st_XLogin.st_XToken.bAutoRenewal)
73+
{
74+
int nRenewalTime = 0;
75+
Session_Token_RenewalTime(xhToken, &nRenewalTime);
76+
77+
if (-1 == st_AuthConfig.st_XLogin.st_XToken.nRenewalTime)
78+
{
79+
bRemove = false;
80+
}
81+
else
82+
{
83+
if (nRenewalTime <= st_AuthConfig.st_XLogin.st_XToken.nRenewalTime)
84+
{
85+
bRemove = false;
86+
}
87+
}
88+
}
89+
90+
if (bRemove)
91+
{
92+
Session_Token_Delete(xhToken);
93+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Token:%lld,用户名:%s,已经超时,权限级别:%d,被移除服务器"), xhToken, st_UserTable.st_UserInfo.tszUserName, st_UserTable.st_UserInfo.nUserLevel);
94+
}
7295
}

0 commit comments

Comments
 (0)