public MainWindow()
        {
            InitializeComponent();
            TokenView view = new TokenView();

            mainFrame.NavigationService.Navigate(view);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        /// <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}")));
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 public async Task <IActionResult> RetrieveToken([FromBody] TokenView tokenView)
 {
     return(Ok(new TokenView {
         Token = SecurityExtension.Encrypt(_ressourceManager.Token, tokenView.Token)
     }));
 }