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
+ }
62
62
}
0 commit comments