/// <summary> /// 登录:成功会更新login_status表 /// </summary> /// <param name="account_idx">账号id</param> /// <param name="callback"></param> public static void QueryLoginStatus(long account_idx, Action <eLoginResult> callback) { string sql = "call SP_LOGIN_ACCOUNT(" + account_idx + "," + 1 + ")"; DBManager.Instance.GetDB(eDBType.Member, 0).Query(sql, (reader) => { eLoginResult login_ret = eLoginResult.E_FAILED_UNKNOWNERROR; if (reader.HasRows && reader.Read()) { uint login_status = reader.GetUInt32(0); uint error = reader.GetUInt32(1); if (error == 0) { if (login_status == 0) { login_ret = eLoginResult.E_SUCCESS; } else { login_ret = eLoginResult.E_FAILED_ALREADYLOGIN; } } else { login_ret = eLoginResult.E_FAILED_SERVERINTERNALERROR; } } callback(login_ret); } ); }
public async Task <HttpResponseMessage> LoginByUserName(HttpRequestMessage request, UserInfo _userInfo) { if (!ModelState.IsValid) { return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } string result = ""; _userInfo.Password = ED5Helper.Encrypt(_userInfo.Password); ApplicationUser oUser = await SignInManager.UserManager.FindByNameAsync(_userInfo.UserName); //ApplicationUser oUser = await SignInManager.UserManager.FindByNameAsync(_userInfo.UserName, _userInfo.Password); eLoginResult objResult = new eLoginResult(); if (string.IsNullOrEmpty(oUser.Id) || oUser.IsDelete) { objResult.loginSuccess = false; objResult.errMessage = "User does not exist"; } else if (oUser.Password != _userInfo.Password) { objResult.loginSuccess = false; objResult.errMessage = "Wrong password"; } else { objResult.loginSuccess = true; objResult.userLogin = oUser; } return(request.CreateResponse(HttpStatusCode.OK, objResult)); }
public override void Read(ByteArray by) { base.Read(by); client_uid.Read(by); login_result = (eLoginResult)by.ReadByte(); account_idx = by.ReadLong(); spid = by.ReadUShort(); ss_uid = by.ReadUShort(); }
private void OnClientLogin(PacketBase packet) { gs2db.ClientLogin msg = packet as gs2db.ClientLogin; ClientUID client_uid = msg.client_uid; string account_name = msg.name; string account_psw = msg.psw; SQLLoginHandle.QueryAccountData(account_name, (data) => { ///1.验证账号密码 eLoginResult result = eLoginResult.E_FAILED_UNKNOWNERROR; if (data.account_idx > 0) { string md5_msg = StringUtils.GetMD5(account_psw); if (data.password_md5 == md5_msg) { result = eLoginResult.E_SUCCESS; } else { result = eLoginResult.E_FAILED_INVALIDPASSWORD; } } else { result = eLoginResult.E_FAILED_INVALIDACCOUNT; } //if(result != eLoginResult.E_SUCCESS) { db2gs.ClientLogin rep_msg = PacketPools.Get(db2gs.msg.CLIENT_LOGIN) as db2gs.ClientLogin; rep_msg.client_uid = client_uid; rep_msg.result = result; rep_msg.account_idx = data.account_idx; rep_msg.spid = data.spid; this.Send(rep_msg); return; } /////2.验证登录状态 //DBHandle.QueryLoginStatus(data.account_idx, (login_res) => //{ // db2gs.ClientLogin rep_msg = PacketPools.Get(db2gs.msg.CLIENT_LOGIN) as db2gs.ClientLogin; // rep_msg.client_uid = msg.client_uid; // rep_msg.result = login_res; // rep_msg.account_idx = data.account_idx; // this.Send(rep_msg); //} //); } ); }
/// <summary> /// 发送验证结果 /// </summary> private void SendLoginResult(ClientUID client_uid, eLoginResult result, long account_idx, ushort spid) { ws2gs.ClientLogin msg = PacketPools.Get(ws2gs.msg.CLIENT_LOGIN) as ws2gs.ClientLogin; msg.client_uid = client_uid; msg.login_result = result; if (result == eLoginResult.E_SUCCESS) { msg.account_idx = account_idx; msg.spid = spid; msg.ss_uid = ServerNetManager.Instance.AllocSSForClient(); } ServerNetManager.Instance.Send(client_uid.srv_uid, msg); }
/// <summary> /// 请求验证 /// </summary> private void CheckAccountLogin(ClientUID client_uid, string account_name, string account_psw, AccountData account_data) { ///1.验证账号密码 eLoginResult result = eLoginResult.E_FAILED_UNKNOWNERROR; if (account_data.account_idx > 0) { string md5_msg = StringUtils.GetMD5(account_psw); if (account_data.password_md5 == md5_msg) { result = eLoginResult.E_SUCCESS; } else { result = eLoginResult.E_FAILED_INVALIDPASSWORD; } } else { result = eLoginResult.E_FAILED_INVALIDACCOUNT; } ///2.验证结果处理 if (result == eLoginResult.E_SUCCESS) { //处理踢号:如果存在账号索引,说明已经登录成功过一次 Unit unit = UnitManager.Instance.GetUnitByAccount(account_data.account_idx); if (unit != null) { //踢号:发给账号所在的gate ServerNetManager.Instance.KickAccount(unit.account_idx); //延长几秒发送,等待踢号 long account_idx = account_data.account_idx; ushort spid = account_data.spid; TimerManager.Instance.AddOnce(3000, (timer_id, param) => { this.SendLoginResult(client_uid, result, account_idx, spid); }); } else { this.SendLoginResult(client_uid, result, account_data.account_idx, account_data.spid); } } else { this.SendLoginResult(client_uid, result, 0, 0); } }
public HttpResponseMessage doLogin(HttpRequestMessage req, UserInfo _user) { return(CreateHttpResponse(req, () => { HttpResponseMessage res = null; if (!ModelState.IsValid) { res = req.CreateResponse(HttpStatusCode.BadRequest, ModelState); } else { _user.Password = ED5Helper.Encrypt(_user.Password); eLoginResult insertResult = aUserAccess.doLogin(_user.UserName, _user.Password); res = req.CreateResponse(HttpStatusCode.Created, insertResult); } return res; })); }
public static eLoginResult doLogin(string user, string password) { string _sp = "SP_DO_LOGIN_SIMPLE"; SqlParameter[] _param = new SqlParameter[2]; _param[0] = new SqlParameter("@PID", user); _param[1] = new SqlParameter("@PPASSWORD", password); DataTable dtResult = DBHelper.getDataTable_SP(_sp, _param); eLoginResult result = new eLoginResult(); result.errMessage = dtResult.Rows[0]["MES"].ToString(); result.loginSuccess = false; if (dtResult.Rows[0]["RESULT"].ToString() == "OK") { result.loginSuccess = true; } return(result); }
//------------------------------------------------------------------------- // 暂时放这里,应该放入独立线程(防止阻塞用户登陆). public override void update(float elapsed_tm) { List <string> del = new List <string>(); foreach (var player in mLoginPlayerQueue) { ClientLoginInfo info = player.Value; if (null == info) { continue; } // 先做断线检测. if (info.state != eLogingState.loginError) { // todo,添加session是否处于连接状态的查询接口 if (info.session == null)// || !info.session. .Connected) { info.state = eLogingState.loginError; info.result = eLoginResult.disconnected; } } if (info.state == eLogingState.connect) { eLoginResult rtCode = eLoginResult.accountNotExists; string sql = string.Format("SELECT AccountName, Password , LoginStatus , AccountId FROM Account WHERE AccountName='{0}';", info.account); EbLog.Note("Login SQL STR :" + sql); MySqlCommand cmd = new MySqlCommand(sql, connection); MySqlDataReader rdr = null; try { rdr = cmd.ExecuteReader(); if (rdr.Read()) { if ((string)rdr["Password"] != info.password) { rtCode = eLoginResult.wrongPassword; } else if ((string)rdr["LoginStatus"] != eLoginStatus.offline.ToString()) { rtCode = eLoginResult.loginstatus; } else { // 登录成功. rtCode = eLoginResult.success; info.tokenId = generateId().ToString(); info.accountId = (long)rdr["AccountId"]; } info.result = rtCode; } if (rdr != null) { rdr.Close(); rdr.Dispose(); rdr = null; } if (rtCode == eLoginResult.success) { // update status sql = string.Format("UPDATE Account SET LoginStatus = '{0}' WHERE AccountName='{1}';", eLoginStatus.loging.ToString(), info.account); EbLog.Note("Login SQL STR :" + sql); MySqlCommand updateCmd = new MySqlCommand(sql, connection); cmd.ExecuteNonQuery(); } } catch (Exception ex) { EbLog.Error(ex.ToString()); } finally { cmd.Dispose(); cmd = null; if (rdr != null) { if (rdr.IsClosed == false) { rdr.Close(); } rdr.Dispose(); rdr = null; } } if (rtCode == ((byte)eLoginResult.success)) { info.state = eLogingState.updateLoging2Db; } } if (info.state == eLogingState.updateLoging2Db) { foreach (var gate in mGateInfo) { GateInfo ser = gate.Value; if (!ser.bloginLock) { // 目前只有账号信息和当前longin id放入ZooKeeper. string dt = info.account + "," + mCoApp.NodeIdStr + "," + info.tokenId.ToString() + "," + info.accountId.ToString(); info.gateId = ser.id; mCoApp.getZk().awriteData(ser.loginNode, dt, null); EbLog.Note("send to gate node :" + ser.loginNode + ",account:" + dt); mCoApp.getZk().acreate(ser.loginLockNode, "", ZK_CONST.ZOO_EPHEMERAL, null); EbLog.Note("set remote lock :" + ser.loginLockNode + ",account:" + dt); ser.bloginLock = true; info.state = eLogingState.updateZk2Gate; break; } } } if (info.state == eLogingState.gateBackSuccess || info.state == eLogingState.gateBackFailed || info.state == eLogingState.loginError) { eLoginStatus curState = (info.state == eLogingState.gateBackSuccess) ? eLoginStatus.online : eLoginStatus.offline; string sql = string.Format("UPDATE Account SET LoginStatus = '{0}' WHERE AccountName='{1}';", curState, info.account); EbLog.Note("Login SQL STR :" + sql); MySqlCommand cmd = new MySqlCommand(sql, connection); try { MySqlCommand updateCmd = new MySqlCommand(sql, connection); cmd.ExecuteNonQuery(); info.state = eLogingState.updateOnline2Db; } catch (Exception ex) { //mLog.ErrorFormat("accoundName:{0}, password:{1} ", info.account, info.password); EbLog.Error(ex.ToString()); } finally { cmd.Dispose(); cmd = null; } if (info.state == eLogingState.updateOnline2Db) { //反馈消息给client. //if (info.peer.Connected)// todo,判定session是否处于连接状态 { //Dictionary<byte, object> p = new Dictionary<byte, object>(); //p[0] = curState.ToString(); //if (curState == eLoginStatus.online) //{ // var list = mGateInfo.Where(gt => gt.Value.id.Equals(info.gateId)); // p[1] = list.First().Value.ipport; // p[2] = info.tokenId; //} //else //{ // p[1] = info.result.ToString(); //} // todo,添加session发送任意数据的方法 LoginUCenterSession <DefUCenterSession> se = info.session as LoginUCenterSession <DefUCenterSession>; se.login2ClientLogin(curState.ToString(), info.tokenId, info.param); //OperationResponse operation_response = new OperationResponse(1, p); //SendResult r = info.peer.SendOperationResponse(operation_response, new SendParameters { ChannelId = 0 }); ////info.session.getRpcPeer().sendEntityRpcData() //if (r != SendResult.Ok) //{ // // Error //} //if (info.peer.Connected) { // 应该断开与客户端的连接. //info.peer.Disconnect(); } } info.state = eLogingState.backToClient; } if (info.state == eLogingState.backToClient) { del.Add(info.account); } } } foreach (string account in del) { ClientLoginInfo delPlayer = null; mLoginPlayerQueue.TryRemove(account, out delPlayer); //delPlayer.peer.Dispose();// todo 连接断开管理 } string offlineaccount = null; if (mofflineQueue.TryDequeue(out offlineaccount)) { eLoginStatus curState = eLoginStatus.offline; string sql = string.Format("UPDATE Account SET LoginStatus = '{0}' WHERE AccountName='{1}';", curState, offlineaccount); EbLog.Error("player offline Login SQL STR :" + sql); MySqlCommand cmd = new MySqlCommand(sql, connection); try { MySqlCommand updateCmd = new MySqlCommand(sql, connection); cmd.ExecuteNonQuery(); } catch (Exception ex) { //mLog.ErrorFormat("accoundName:{0} offline failed ", offlineaccount); EbLog.Error(ex.ToString()); } finally { cmd.Dispose(); cmd = null; } } }
public override void Read(ByteArray by) { base.Read(by); login_result = (eLoginResult)by.ReadByte(); }