1- // GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2- //
3- // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4- //
5- // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6-
7- using GameFrameX . Apps . Account . Login . Entity ;
8- using GameFrameX . DataBase ;
9- using GameFrameX . Monitor . Account ;
10- using GameFrameX . NetWork . Messages ;
11-
12- namespace GameFrameX . Hotfix . Logic . Http . Player ;
13-
14- /// <summary>
15- /// 账号登录
16- /// </summary>
17- [ HttpMessageMapping ( typeof ( ReqLoginHttpHandler ) ) ]
18- [ Description ( "账号登录,仅限前端调用" ) ]
19- public sealed class ReqLoginHttpHandler : BaseHttpHandler
20- {
21- public override async Task < MessageObject > Action ( string ip , string url , Dictionary < string , object > parameters , MessageObject messageObject )
22- {
23- var reqLogin = ( ReqLogin ) messageObject ;
24- var respLogin = new RespLogin ( ) ;
25- if ( reqLogin . UserName . IsNullOrEmpty ( ) || reqLogin . Password . IsNullOrEmpty ( ) )
26- {
27- respLogin . ErrorCode = ( int ) ResultCode . Failed ;
28- return null ;
29- }
30-
31- MetricsAccountRegister . LoginCounterOptions . Inc ( ) ;
32- var loginState = await OnLogin ( reqLogin ) ;
33-
34- if ( loginState == null )
35- {
36- var accountId = ActorIdGenerator . GetUniqueId ( ) ;
37- loginState = await Register ( accountId , reqLogin ) ;
38- }
39-
40- // 构建账号登录返回信息
41- respLogin . Code = loginState . State ;
42- respLogin . CreateTime = loginState . CreateTime ;
43- respLogin . Level = loginState . Level ;
44- respLogin . Id = loginState . Id ;
45- respLogin . RoleName = loginState . NickName ;
46- return respLogin ;
47- }
48-
49- public async Task < LoginState > OnLogin ( ReqLogin reqLogin )
50- {
51- MetricsAccountRegister . LoginCounterOptions . Inc ( ) ;
52- return await GameDb . FindAsync < LoginState > ( m => m . UserName == reqLogin . UserName && m . Password == reqLogin . Password ) ;
53- }
54-
55- public async Task < LoginState > Register ( long accountId , ReqLogin reqLogin )
56- {
57- MetricsAccountRegister . RegisterCounterOptions . Inc ( ) ;
58- var loginState = new LoginState { Id = accountId , UserName = reqLogin . UserName , Password = reqLogin . Password , } ;
59- await GameDb . SaveOneAsync ( loginState ) ;
60- return loginState ;
61- }
1+ // GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+ //
3+ // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+ //
5+ // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+ using GameFrameX . Apps . Account . Login . Entity ;
8+ using GameFrameX . DataBase ;
9+ using GameFrameX . Monitor . Account ;
10+ using GameFrameX . NetWork . Messages ;
11+
12+ namespace GameFrameX . Hotfix . Logic . Http . Player ;
13+
14+ /// <summary>
15+ /// 账号登录
16+ /// </summary>
17+ [ HttpMessageMapping ( typeof ( ReqLoginHttpHandler ) ) ]
18+ [ Description ( "账号登录,仅限前端调用" ) ]
19+ public sealed class ReqLoginHttpHandler : BaseHttpHandler
20+ {
21+ public override async Task < MessageObject > Action ( string ip , string url , Dictionary < string , object > parameters , MessageObject messageObject )
22+ {
23+ var reqLogin = ( ReqLogin ) messageObject ;
24+ var respLogin = new RespLogin ( ) ;
25+ if ( reqLogin . UserName . IsNullOrEmpty ( ) || reqLogin . Password . IsNullOrEmpty ( ) )
26+ {
27+ respLogin . ErrorCode = ( int ) ResultCode . Failed ;
28+ return null ;
29+ }
30+
31+ MetricsAccountRegister . LoginCounterOptions . Inc ( ) ;
32+ var loginState = await OnLogin ( reqLogin ) ;
33+
34+ if ( loginState == null )
35+ {
36+ var accountId = ActorIdGenerator . GetUniqueId ( ) ;
37+ loginState = await Register ( accountId , reqLogin ) ;
38+ }
39+
40+ // 构建账号登录返回信息
41+ respLogin . Code = loginState . State ;
42+ respLogin . CreateTime = loginState . CreateTime ;
43+ respLogin . Level = loginState . Level ;
44+ respLogin . Id = loginState . Id ;
45+ respLogin . RoleName = loginState . NickName ;
46+ return respLogin ;
47+ }
48+
49+ public async Task < LoginState > OnLogin ( ReqLogin reqLogin )
50+ {
51+ MetricsAccountRegister . LoginCounterOptions . Inc ( ) ;
52+ return await GameDb . FindAsync < LoginState > ( m => m . UserName == reqLogin . UserName && m . Password == reqLogin . Password , false ) ;
53+ }
54+
55+ public async Task < LoginState > Register ( long accountId , ReqLogin reqLogin )
56+ {
57+ MetricsAccountRegister . RegisterCounterOptions . Inc ( ) ;
58+ var loginState = new LoginState { Id = accountId , UserName = reqLogin . UserName , Password = reqLogin . Password , } ;
59+ await GameDb . AddOrUpdateAsync ( loginState ) ;
60+ return loginState ;
61+ }
6262}
0 commit comments