public MainWindow() { InitializeComponent(); TokenView view = new TokenView(); mainFrame.NavigationService.Navigate(view); }
public async Task <H5ResponseViewModel <TokenView> > PwdLogin([FromBody] H5RequestViewModel Parameters) { var sysCode = _sys.CheckParameters(Parameters.data, "PwdLogin_H5"); H5ResponseViewModel <TokenView> response = null; TokenView result = null; if (sysCode == SysCode.Ok) { string phone = Parameters.data.phone; //判断手机号码是否注册 bool isExist = await _user.PhoneExistAsync(phone); if (isExist) { //获取用户登录信息。 var userLogin = await _user.GetUserLoginAsync(phone); if (userLogin.Salt != 0) { string pwd = _sys.Md5Encode($"{(string)Parameters.data.password}{userLogin.Salt}"); var userId = _user.UserLoginOrPwd(phone, pwd); if (userId != 0) { result = _token.GetH5Token(userId); await _user.RecordLoginLogAsync(new userLoginLogDto { App_version = "H5", Createtime = TimeHelper.GetDateTime(), Device_code = "H5", Gps = "H5", Os_type = "H5", Os_version = "H5", Phone = phone, Userid = userId }); } else { sysCode = SysCode.PwdErr; } } else { //用户H5登录注册,没有密码 sysCode = SysCode.UserPwdIsNull; } } else { sysCode = SysCode.PhoneNonentity; } } response = new H5ResponseViewModel <TokenView>(sysCode, result ?? null); return(response); }
private void TokenTable_Load(object sender, EventArgs e) { this.Location = new Point(700, 100); int index = 1; foreach (Token T in TokenSet) { TokenView.Rows.Add(new string[] { index.ToString(), T.Literal.ToString(), T.UpperType.ToString(), T.Type.ToString() }); index++; } TokenView.Refresh(); }
/// <summary> /// H5获取token /// author:陶林辉 /// </summary> /// <param name="userId">用户id</param> /// <returns></returns> public TokenView GetH5Token(long userId) { var vInfo = _context.UserLogin.Where(e => e.Userid == userId).FirstOrDefault(); string token = Guid.NewGuid().ToString(); RedisHelper.KeyDelete($"{CacheKey.Token}{token}", RedisFolderEnum.token, RedisEnum.Five); RedisHelper.StringSet($"{CacheKey.Token}{token}", vInfo, 10080, RedisFolderEnum.token, RedisEnum.Five); TokenView result = new TokenView { token = token }; vInfo.Token = token; _context.SaveChanges(); return(result); }
private void RetrieveKey(int counter = 0) { if (counter == 3) { ClientContext.Logger.LogWarning($"Failed to reach API! ({counter} retries!)", "", "", 0); return; } try { Tuple <string, string> tempKey = SecurityExtension.CreatePair(); ApiClient.CreateRequest("api/ressources/token", "POST") .WithBody(new TokenView { Token = tempKey.Item2 }) .Execute(out HttpWebResponse response); if (response.TryGetStatusCode(out HttpStatusCode code)) { string responseString = response.GetReponseString(); if (response.StatusCode == HttpStatusCode.OK) { TokenView tokenView = responseString.DeserializeJsonSafe <TokenView>(); if (tokenView != null) { _token = Protect(SecurityExtension.Decrypt(tokenView.Token, tempKey.Item1)); _keyRetrieved = true; ClientContext.Logger.LogSuccess("Token retrieved successfully!", "", "", 0); return; } ClientContext.Logger.LogWarning($"Failed to extract deserialize response ['{responseString}']", "", "", 0); } else { ClientContext.Logger.LogWarning($"Request failed [Code: {response.StatusCode.ToString("G")}, Response: '{responseString}']", "", "", 0); } } } catch (Exception e) { ClientContext.Logger.LogError(e, "", "", 0); } RetrieveKey(++counter); }
public async Task <IActionResult> Auth( CancellationToken cancellationToken, [FromForm(Name = "grant_type")] String grantType, [FromForm(Name = "username")] String userName, [FromForm(Name = "password")] String password, [FromForm(Name = "refresh_token")] String refreshToken, [FromServices] UserAuthenticationService authenticationService) { // много дичи согласно RFC const String passwordGrantType = "password"; const String refreshTokenGrantType = "refresh_token"; if (String.IsNullOrEmpty(grantType)) { return(BadRequest(ErrorView.Build(ErrorCode.InvalidRequest, "Field 'grant_type' is required"))); } switch (grantType) { case passwordGrantType: if (String.IsNullOrEmpty(userName)) { BadRequest(ErrorView.Build(ErrorCode.InvalidRequest, $"Field 'username' is required for '{passwordGrantType}' grant type")); } if (String.IsNullOrEmpty(password)) { BadRequest(ErrorView.Build(ErrorCode.InvalidRequest, $"Field 'password' is required for '{passwordGrantType}' grant type")); } try{ return(Ok(TokenView.FromToken( await authenticationService.AuthenticationByPassword(userName, password, cancellationToken)))); } catch (UnauthorizedException) { return(BadRequest(ErrorView.Build(ErrorCode.UnauthorizedClient, "Login or password is incorrect"))); } catch (UnconfirmedException) { return(BadRequest(ErrorView.Build(ErrorCode.InvalidClient, "Registration is unconfirmed"))); } case refreshTokenGrantType: if (String.IsNullOrEmpty(refreshToken)) { BadRequest(ErrorView.Build(ErrorCode.InvalidRequest, $"Field 'refresh_token' is required for '{refreshTokenGrantType}' grant type")); } try{ return(Ok(TokenView.FromToken( await authenticationService.AuthenticationByRefreshToken(refreshToken, cancellationToken)))); } catch (UnauthorizedException) { return(BadRequest(ErrorView.Build(ErrorCode.UnauthorizedClient, "Refresh token is incorrect"))); } catch (UnconfirmedException) { return(BadRequest(ErrorView.Build(ErrorCode.InvalidClient, "Registration is unconfirmed"))); } default: return(BadRequest(ErrorView.Build(ErrorCode.UnsupportedGrantType, $"Unsupported grant type: {grantType}. Possible types: {passwordGrantType}, {refreshTokenGrantType}"))); } }
public async Task <H5ResponseViewModel <TokenView> > Login([FromBody] H5RequestViewModel Parameters) { //判断参数完整 var sysCode = _sys.CheckParameters(Parameters.data, "Login"); H5ResponseViewModel <TokenView> response = null; TokenView result = null; //用户手机号码 string phone = Parameters.data.phone; //验证码缓存Key string strKey = $"{CacheKey.H5LogIn.ToString()}{phone}"; if (sysCode == SysCode.Ok) { //判断验证码是否正确 if (RedisHelper.KeyExists(strKey, RedisFolderEnum.code, RedisEnum.Four) && RedisHelper.StringGet(strKey, RedisFolderEnum.code, RedisEnum.Four).Equals((string)Parameters.data.verifyCode)) { //判断手机号码是否注册 long userId = 0; if (await _user.PhoneExistAsync(phone)) { userId = _user.GetUserIdByPhone(phone); } else { /*注册信息*/ /*登陆信息*/ /*用户基本信息*/ userId = _user.Register(new RegisterDto { App_version = "", Channel = Parameters.data.channelId, Createtime = DateTime.Now, Device_code = "", Os_type = "", Gps = "", Os_version = "", Phone = phone, Platform = "H5", Updatetime = DateTime.Now }, new UserLoginDto { Createtime = TimeHelper.GetDateTime(), Is_first = 1, Password = "", Phone = phone, Status = 0, Salt = 0, Updatetime = TimeHelper.GetDateTime(), }, new UserInfoDto { Createtime = TimeHelper.GetDateTime(), Head = "", Updatetime = TimeHelper.GetDateTime(), Nick_name = "" }); } if (userId != 0) { result = _token.GetH5Token(userId); //记录用户登陆日志 userLoginLogDto Log = new userLoginLogDto { App_version = "H5", Createtime = TimeHelper.GetDateTime(), Device_code = "H5", Gps = "H5", Os_type = "H5", Os_version = "H5", Phone = phone, Userid = userId }; await _user.RecordLoginLogAsync(Log); } else { sysCode = SysCode.Err; } } else { //验证码不存在或者验证错误 sysCode = SysCode.CodeErr; } } response = new H5ResponseViewModel <TokenView>(sysCode, result ?? null); return(response); }
public async Task <IActionResult> RetrieveToken([FromBody] TokenView tokenView) { return(Ok(new TokenView { Token = SecurityExtension.Encrypt(_ressourceManager.Token, tokenView.Token) })); }