void bindingKeyCommand() { if (string.IsNullOrEmpty(this.UserID)) { this.ShowDialog("提示信息", "请先登录", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } if (string.IsNullOrEmpty(this.PrivateKey)) { this.ShowDialog("提示信息", "私有Key", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } if (string.IsNullOrEmpty(this.PublicKey)) { this.ShowDialog("提示信息", "没有公有Key", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } var keyInfo = new KeyBodyInfo() { public_key = PublicKey, secret_type = (byte)this.SelectSecretType }; WebAPI.Instance.SetSecret(keyInfo, CacheManager.Instance.LoginUser.AccessToken); }
public Tuple <bool, string, string> SetSecret(KeyBodyInfo secretInfo, string token) { var url = $"{LoginUrl}&method={Method_Secrets}&access_token={token}"; var body = Newtonsoft.Json.JsonConvert.SerializeObject(secretInfo); return(this.PostString(url, body)); }
public Tuple <bool, string> SetSecret(KeyBodyInfo secretInfo, string token) { var url = $"{LoginUrl}&method={Method_Secrets}&access_token={token}"; var message = Newtonsoft.Json.JsonConvert.SerializeObject(secretInfo); var response = _easyHttpClient.Post(url, message, HttpContentTypes.ApplicationJson); string result = null; bool resultBool = false; if (response.StatusCode == System.Net.HttpStatusCode.OK) { var responseInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <ResponseInfo>(response.RawText); if (responseInfo.code == 20000) { resultBool = true; } else { List <MessageInfo> messageInfo; try { messageInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <List <MessageInfo> >(responseInfo.msg); StringBuilder stringBuilder = new StringBuilder(); messageInfo?.ForEach(mi => { stringBuilder.AppendLine($"({mi.ErrorCode}){mi.Description}"); }); result = stringBuilder.ToString(); } catch { result = $"{responseInfo.msg}"; } resultBool = false; } } else { resultBool = false; } return(Tuple.Create <bool, string>(resultBool, result)); }
public static bool SignCheck() { // 注册Key. var keyInfo = new KeyBodyInfo() { public_key = CacheManager.Instance.LoginUser.PublickKey, secret_type = (int)SecretTypeEnum.RSA2 }; var secret = WebAPI.Instance.SetSecret(keyInfo, CacheManager.Instance.LoginUser.AccessToken); if (!secret.Item1) { CustomControl.DialogWindowHelper.ShowDialog("提示信息", secret.Item2, CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); System.Diagnostics.Process.Start(System.IO.Path.Combine(Environment.CurrentDirectory, "Client.exe")); DispatcherHelper.CheckBeginInvokeOnUI(() => { Environment.Exit(0); }); } return(secret.Item1); }
/// <summary> /// 登录验证 /// </summary> /// <param name="obj">登录窗口</param> void loginCommand(object obj) { Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); string loginUrl = cfa.AppSettings.Settings["xy:login.address"].Value; string loginPort = cfa.AppSettings.Settings["xy:login.port"].Value; string loginVersion = cfa.AppSettings.Settings["xy:login.version"].Value; string loginPath = $"{loginUrl}:{loginPort}"; WebAPI.Instance.SetLoginFactory(loginPath, loginVersion); LoginWindow win = obj as LoginWindow; string password = win.pb_password.Password; if (string.IsNullOrEmpty(password)) { this.ShowDialog("提示信息", "密码为空!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } if (string.IsNullOrEmpty(this.UserName)) { this.ShowDialog("提示信息", "用户名不能为空!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } if (this.IsRemember) { // 记录用户名 usernameFile.CombineCurrentDirectory().SerializeObjectToJson(this.UserName); } if (this.IsRememberPassWord) { // 记录密码 "password.info".CombineCurrentDirectory().SerializeObjectToJson(password); } base.ShowLoading = true; Task.Run(() => { var userInfo = new LoginInfo() { user_name = this.UserName, password = password }; return(WebAPI.Instance.Login(userInfo)); }).ContinueWith(r => { this.ShowLoading = false; if (r.Result.Item1) { CacheManager.Instance.LoginUser = new Models.User() { ID = r.Result.Item2.user_id, UserName = r.Result.Item2.user_name, AccessToken = r.Result.Item2.access_token, MixKey = r.Result.Item2.mix_key, PassWord = password }; string key = $"{CacheManager.Instance.LoginUser.UserName}.key"; // 检查IP地址 if (System.IO.File.Exists(lastAdress.CombineCurrentDirectory())) { string check_url = cfa.AppSettings.Settings["xy:address"].Value; string check_port = cfa.AppSettings.Settings["xy:port"].Value; string check_path = $"{check_url}:{check_port}"; var lassAdress = lastAdress.CombineCurrentDirectory().DeSerializeObjectFromJson <string>(); if (!lassAdress.Equals(check_path)) { System.IO.File.Delete(key.CombineCurrentDirectory()); } } // 检查本地是否有(密钥和公钥) if (System.IO.File.Exists(key.CombineCurrentDirectory())) { // 0-公钥,1-私钥 List <string> keys = key.CombineCurrentDirectory().DeSerializeObjectFromJson <List <string> >(); CacheManager.Instance.LoginUser.PublickKey = keys[0]; CacheManager.Instance.LoginUser.PrivateKey = keys[1]; } else { // 1.生成密钥 List <string> keys = new List <string>(); keys = RSAUtil.GenerateSuiteKeys()?.ToList(); CacheManager.Instance.LoginUser.PublickKey = keys[0]; CacheManager.Instance.LoginUser.PrivateKey = keys[1]; key.CombineCurrentDirectory().SerializeObjectToJson(keys); var keyInfo = new KeyBodyInfo() { public_key = keys[0], secret_type = (int)SecretTypeEnum.RSA2 }; // 2.绑定密钥 var secret = WebAPI.Instance.SetSecret(keyInfo, CacheManager.Instance.LoginUser.AccessToken); if (!secret.Item1) { DispatcherHelper.CheckBeginInvokeOnUI(() => { var dialog = this.ShowDialog("提示信息", secret.Item2, CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); }); return; } } #region 设置排课连接 string url = cfa.AppSettings.Settings["xy:address"].Value; string port = cfa.AppSettings.Settings["xy:port"].Value; string version = cfa.AppSettings.Settings["xy:version"].Value; string path = $"{url}:{port}"; WebAPI.Instance.SetFactory(path, version, CacheManager.Instance.LoginUser.ID); lastAdress.CombineCurrentDirectory().SerializeObjectToJson(path); #endregion var isAnnual = WebAPI.Instance.GetAnnual(); if (isAnnual.Item1) { CacheManager.Instance.LoginUser.IsAnnual = isAnnual.Item2; } //Messenger.Default.Send<string>("refresh"); DispatcherHelper.CheckBeginInvokeOnUI(() => { win.DialogResult = true; }); } else { DispatcherHelper.CheckBeginInvokeOnUI(() => { this.ShowDialog("提示信息", r.Result.Item3, CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); }); } }); }