public async Task Login(AuthLoginInput input = null)
        {
            if (input == null && _appConfig.VarifyCode.Enable)
            {
                var res = await _authService.GetVerifyCodeAsync("") as IResponseOutput <AuthGetVerifyCodeOutput>;

                var verifyCodeKey = string.Format(CacheKey.VerifyCodeKey, res.Data.Key);
                var verifyCode    = await _cache.GetAsync(verifyCodeKey);

                input = new AuthLoginInput()
                {
                    UserName      = "******",
                    Password      = "******",
                    VerifyCodeKey = res.Data.Key,
                    VerifyCode    = verifyCode
                };
            }

            //Client.DefaultRequestHeaders.Connection.Add("keep-alive");
            Client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36");

            var result = await Client.PostAsync($"/api/admin/auth/login", GetHttpContent(input));

            var content = await result.Content.ReadAsStringAsync();

            var jObject = JsonConvert.DeserializeObject <JObject>(content);

            Client.DefaultRequestHeaders.Add("Authorization", $"Bearer {jObject["data"]["token"]}");
        }
        public Task <ItemResult <AccountInfo> > LoginAsync(AuthLoginInput input)
        {
            var request = new RestRequest(Method.POST);

            request.Resource = "auth/login";
            request.AddJsonBody(input);
            return(this.Sdk.ExecuteAsync <ItemResult <AccountInfo> >(request));
        }
Exemple #3
0
        public async Task <IActionResult> Login([FromBody] AuthLoginInput loginModel)
        {
            var sw = new Stopwatch();

            sw.Start();
            var res = await _authService.LoginAsync(loginModel);

            //  var  res = await _authApi.Login(loginModel);
            sw.Stop();
            #region

            var loginLogAddInput = new LoginLogAddInput()
            {
                CreatedUserName     = loginModel.UserName,
                ElapsedMilliseconds = sw.ElapsedMilliseconds,
                Status = res.Success,
                Msg    = res.Msg
            };

            ResultModel <AuthLoginOutput> output = null;
            if (res.Success)
            {
                output = res as ResultModel <AuthLoginOutput>;
                var _user = output.Data;
                loginLogAddInput.CreatedUserId = _user.Id;
                loginLogAddInput.NickName      = _user.NickName;
            }

            // await _loginLogService.AddAsync(loginLogAddInput);
            #endregion

            if (!res.Success)
            {
                return(Json(res));
            }
            var userData = output.Data;
            var claims   = new[]
            {
                new Claim(ClaimAttributes.UserId, userData.Id.ToString()),
                new Claim(ClaimAttributes.UserName, userData.UserName),
                new Claim(ClaimAttributes.UserNickName, userData.NickName)
            };
            var             claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
            ClaimsPrincipal user           = new ClaimsPrincipal(claimsIdentity);
            await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user);

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                user, new AuthenticationProperties()
            {
                IsPersistent = true,
                ExpiresUtc   = DateTimeOffset.UtcNow.AddMinutes(60),
                AllowRefresh = true
            });

            return(Json(res));
        }
        public async Task<IResponseOutput> Login(AuthLoginInput input)
        {
            var sw = new Stopwatch();
            sw.Start();
            var res = await _authService.LoginAsync(input);
            sw.Stop();


            if (!res.Success) return !res.Success ? res : GetToken(output: null);
            var output = (res as ResponseOutput<AuthLoginOutput>);

            return !res.Success ? res : GetToken(output);
        }
        public async Task <IResponseOutput> Login(AuthLoginInput input)
        {
            var sw = new Stopwatch();

            sw.Start();
            var res = (await _authService.LoginAsync(input)) as IResponseOutput;

            sw.Stop();

            #region 添加登录日志
            var loginLogAddInput = new LoginLogAddInput()
            {
                CreatedUserName     = input.UserName,
                ElapsedMilliseconds = sw.ElapsedMilliseconds,
                Status = res.Success,
                Msg    = res.Msg
            };

            AuthLoginOutput user = null;
            if (res.Success)
            {
                user = (res as IResponseOutput <AuthLoginOutput>).Data;
                loginLogAddInput.CreatedUserId = user.Id;
                loginLogAddInput.RealName      = user.Name;
            }

            await _loginLogService.AddAsync(loginLogAddInput);

            #endregion

            if (!res.Success)
            {
                return(res);
            }

            #region 生成token信息
            var token = _userToken.Build(new[]
            {
                new Claim(ClaimAttributes.UserId, user.Id.ToString()),
                new Claim(ClaimAttributes.UserName, user.UserName),
                new Claim(ClaimAttributes.UserRealName, user.Name)
            });
            #endregion

            return(ResponseOutput.Ok(new { token }));
        }
        public async Task <AccountInfo> Login(string user, string password)
        {
            HavenSDK sdk = this.GetHavenSDK(true, null);

            AuthLoginInput input = new AuthLoginInput()
            {
                user     = user,
                password = password
            };

            AccountInfo result = await sdk.Auth.LoginAsync(input).DemoUnPack();

            if (result != null)
            {
                _account = result;
            }
            return(result);
        }
        public async Task <IResponseOutput> LoginAsync(AuthLoginInput input)
        {
            var user = (await _userRepository.GetAsync(a => a.UserName == input.UserName));

            if (!(user?.Id > 0))
            {
                return(ResponseOutput.NotOk("账号输入有误!", 3));
            }

            #region 解密
            if (input.PasswordKey.NotNull())
            {
                var passwordEncryptKey = string.Format(CacheKey.PassWordEncryptKey, input.PasswordKey);
                var existsPasswordKey  = await _cache.ExistsAsync(passwordEncryptKey);

                if (existsPasswordKey)
                {
                    var secretKey = await _cache.GetAsync(passwordEncryptKey);

                    if (secretKey.IsNull())
                    {
                        return(ResponseOutput.NotOk("解密失败!", 1));
                    }
                    input.Password = DesEncrypt.Decrypt(input.Password, secretKey);
                    await _cache.DelAsync(passwordEncryptKey);
                }
                else
                {
                    return(ResponseOutput.NotOk("解密失败!", 1));
                }
            }
            #endregion

            var password = Md5Encrypt.Encrypt32(input.Password);
            if (user.Password != password)
            {
                return(ResponseOutput.NotOk("密码输入有误!", 4));
            }

            var authLoginOutput = _mapper.Map <AuthLoginOutput>(user);

            return(ResponseOutput.Ok(authLoginOutput));
        }
Exemple #8
0
        public async Task <IResponseOutput> Login(AuthLoginInput input)
        {
            var sw = new Stopwatch();

            sw.Start();
            var res = await _authService.LoginAsync(input);

            sw.Stop();

            #region 添加登录日志

            var loginLogAddInput = new LoginLogAddInput()
            {
                CreatedUserName     = input.UserName,
                ElapsedMilliseconds = sw.ElapsedMilliseconds,
                Status = res.Success,
                Msg    = res.Msg
            };

            ResponseOutput <AuthLoginOutput> output = null;
            if (res.Success)
            {
                output = (res as ResponseOutput <AuthLoginOutput>);
                var user = output.Data;
                loginLogAddInput.CreatedUserId = user.Id;
                loginLogAddInput.NickName      = user.NickName;
                loginLogAddInput.TenantId      = user.TenantId;
            }

            await _loginLogService.AddAsync(loginLogAddInput);

            #endregion 添加登录日志

            if (!res.Success)
            {
                return(res);
            }

            return(GetToken(output));
        }
        public object Login(AuthLoginInput input)
        {
            return(base.ExecuteFunction <object>("Login", delegate()
            {
                Account account = this.API.Direct.Accounts.GetForValidPassword(input.user, input.password);
                if (account == null)
                {
                    return Http400("Invalid password/user combination");
                }


                sdk.Responses.AccountInfo data = account.ToInfoModel();

                FormsAuthentication.SetAuthCookie(account.account_id.ToString(), input.persist);

                ItemResult <sdk.Responses.AccountInfo> result = new ItemResult <sdk.Responses.AccountInfo>()
                {
                    item = data,
                    success = true
                };
                return base.Http200(result);
            }));
        }
Exemple #10
0
        public async Task <IResponseOutput> LoginAsync(AuthLoginInput input)
        {
            #region 验证码校验
            var verifyCodeKey = string.Format(CacheKey.VerifyCodeKey, input.VerifyCodeKey);
            var exists        = await _cache.ExistsAsync(verifyCodeKey);

            if (exists)
            {
                var verifyCode = await _cache.GetAsync(verifyCodeKey);

                if (string.IsNullOrEmpty(verifyCode))
                {
                    return(ResponseOutput.NotOk("验证码已过期!", 1));
                }
                if (verifyCode.ToLower() != input.VerifyCode.ToLower())
                {
                    return(ResponseOutput.NotOk("验证码输入有误!", 2));
                }
                await _cache.DelAsync(verifyCodeKey);
            }
            else
            {
                return(ResponseOutput.NotOk("验证码已过期!", 1));
            }
            #endregion

            var user = (await _userRepository.Select.Where(a => a.UserName == input.UserName).ToOneAsync());
            if (!(user?.Id > 0))
            {
                return(ResponseOutput.NotOk("账号输入有误!", 3));
            }

            #region 解密
            if (input.PasswordKey.NotNull())
            {
                var passwordEncryptKey = string.Format(CacheKey.PassWordEncryptKey, input.PasswordKey);
                var existsPasswordKey  = await _cache.ExistsAsync(passwordEncryptKey);

                if (existsPasswordKey)
                {
                    var secretKey = await _cache.GetAsync(passwordEncryptKey);

                    if (passwordEncryptKey.IsNull())
                    {
                        return(ResponseOutput.NotOk("解密失败!", 1));
                    }
                    input.Password = DesEncrypt.Decrypt(input.Password, secretKey);
                    await _cache.DelAsync(passwordEncryptKey);
                }
                else
                {
                    return(ResponseOutput.NotOk("解密失败!", 1));
                }
            }
            #endregion

            var password = MD5Encrypt.Encrypt32(input.Password);
            if (user.Password != password)
            {
                return(ResponseOutput.NotOk("密码输入有误!", 4));
            }

            //生成token信息
            var claims = new[]
            {
                new Claim(ClaimAttributes.UserId, user.Id.ToString()),
                new Claim(ClaimAttributes.UserName, user.UserName),
                new Claim(ClaimAttributes.UserRealName, user.Name)
            };
            var token = _userToken.Build(claims);

            return(ResponseOutput.Ok(new
            {
                token
            }));
        }
Exemple #11
0
        public async Task <IResponseOutput> LoginAsync(AuthLoginInput input)
        {
            #region 验证码校验
            if (_appConfig.VarifyCode.Enabled)
            {
                var verifyCodeKey = string.Format(CacheKey.VerifyCodeKey, input.VerifyCodeKey);
                var exists        = await _cache.ExistsAsync(verifyCodeKey);

                if (exists)
                {
                    var verifyCode = await _cache.GetAsync(verifyCodeKey);

                    if (string.IsNullOrEmpty(verifyCode))
                    {
                        return(ResponseOutput.NotOk("验证码已过期!", 1));
                    }
                    if (verifyCode.ToLower() != input.VerifyCode.ToLower())
                    {
                        return(ResponseOutput.NotOk("验证码输入有误!", 2));
                    }
                    await _cache.DelAsync(verifyCodeKey);
                }
                else
                {
                    return(ResponseOutput.NotOk("验证码已过期!", 1));
                }
            }
            #endregion

            var user = (await _userRepository.GetAsync(a => a.UserName == input.UserName));
            if (!(user?.Id > 0))
            {
                return(ResponseOutput.NotOk("账号输入有误!", 3));
            }

            #region 解密
            if (input.PasswordKey.NotNull())
            {
                var passwordEncryptKey = string.Format(CacheKey.PassWordEncryptKey, input.PasswordKey);
                var existsPasswordKey  = await _cache.ExistsAsync(passwordEncryptKey);

                if (existsPasswordKey)
                {
                    var secretKey = await _cache.GetAsync(passwordEncryptKey);

                    if (secretKey.IsNull())
                    {
                        return(ResponseOutput.NotOk("解密失败!", 1));
                    }
                    input.Password = DesEncrypt.Decrypt(input.Password, secretKey);
                    await _cache.DelAsync(passwordEncryptKey);
                }
                else
                {
                    return(ResponseOutput.NotOk("解密失败!", 1));
                }
            }
            #endregion

            var password = MD5Encrypt.Encrypt32(input.Password);
            if (user.Password != password)
            {
                return(ResponseOutput.NotOk("密码输入有误!", 4));
            }

            var authLoginOutput = _mapper.Map <AuthLoginOutput>(user);

            return(ResponseOutput.Ok(authLoginOutput));
        }
Exemple #12
0
        public async Task <IResultModel> LoginAsync(AuthLoginInput input)
        {
            #region 验证码校验
            //if (_appConfig.VarifyCode.Enable)
            //{
            //    var verifyCodeKey = string.Format(CacheKey.VerifyCodeKey, input.VerifyCodeKey);
            //    var exists = await _cache.ExistsAsync(verifyCodeKey);
            //    if (exists)
            //    {
            //        var verifyCode = await _cache.GetAsync(verifyCodeKey);
            //        if (string.IsNullOrEmpty(verifyCode))
            //        {
            //            return ResponseOutput.NotOk("验证码已过期!", 1);
            //        }
            //        if (verifyCode.ToLower() != input.VerifyCode.ToLower())
            //        {
            //            return ResponseOutput.NotOk("验证码输入有误!", 2);
            //        }
            //        await _cache.DelAsync(verifyCodeKey);
            //    }
            //    else
            //    {
            //        return ResponseOutput.NotOk("验证码已过期!", 1);
            //    }
            //}
            #endregion
            string conditions = "where UserName=@UserName ";
            var    user       = await _userRepository.GetAsync(conditions, new { input.UserName });

            if (!(user?.Id > 0))
            {
                return(ResultModel.Failed("账号输入有误!", 3));
            }

            #region 解密
            //if (input.PasswordKey.NotNull())
            //{
            //    var passwordEncryptKey = string.Format(CacheKey.PassWordEncryptKey, input.PasswordKey);
            //    var existsPasswordKey = await _cache.ExistsAsync(passwordEncryptKey);
            //    if (existsPasswordKey)
            //    {
            //        var secretKey = await _cache.GetAsync(passwordEncryptKey);
            //        if (secretKey.IsNull())
            //        {
            //            return ResponseOutput.NotOk("解密失败!", 1);
            //        }
            //        input.Password = DesEncrypt.Decrypt(input.Password, secretKey);
            //        await _cache.DelAsync(passwordEncryptKey);
            //    }
            //    else
            //    {
            //        return ResponseOutput.NotOk("解密失败!", 1);
            //    }
            //}
            #endregion

            var password = MD5Encrypt.Encrypt32(input.Password);
            if (user.Password != password)
            {
                return(ResultModel.Failed("密码输入有误!", 4));
            }


            var authLoginOutput = _mapper.Map <AuthLoginOutput>(user);
            //await _cache.SetAsync(CacheKey.UserAuthLogin, authLoginOutput, TimeSpan.FromMinutes(5));

            return(ResultModel.Success(authLoginOutput));
        }
Exemple #13
0
        public async Task <IResponseOutput> LoginAsync(AuthLoginInput input)
        {
            #region 验证码校验

            if (_appConfig.VarifyCode.Enable)
            {
                var verifyCodeKey = string.Format(CacheKey.VerifyCodeKey, input.VerifyCodeKey);
                var exists        = await Cache.ExistsAsync(verifyCodeKey);

                if (exists)
                {
                    var verifyCode = await Cache.GetAsync(verifyCodeKey);

                    if (string.IsNullOrEmpty(verifyCode))
                    {
                        return(ResponseOutput.NotOk("验证码已过期!", 1));
                    }
                    if (verifyCode.ToLower() != input.VerifyCode.ToLower())
                    {
                        return(ResponseOutput.NotOk("验证码输入有误!", 2));
                    }
                    await Cache.DelAsync(verifyCodeKey);
                }
                else
                {
                    return(ResponseOutput.NotOk("验证码已过期!", 1));
                }
            }

            #endregion 验证码校验

            UserEntity user = null;

            user = await _userRepository.Select.DisableGlobalFilter("Tenant").Where(a => a.UserName == input.UserName).ToOneAsync();

            //user = (await _userRepository.GetAsync(a => a.UserName == input.UserName));

            if (!(user?.Id > 0))
            {
                return(ResponseOutput.NotOk("账号输入有误!", 3));
            }

            #region 解密

            if (input.PasswordKey.NotNull())
            {
                var passwordEncryptKey = string.Format(CacheKey.PassWordEncryptKey, input.PasswordKey);
                var existsPasswordKey  = await Cache.ExistsAsync(passwordEncryptKey);

                if (existsPasswordKey)
                {
                    var secretKey = await Cache.GetAsync(passwordEncryptKey);

                    if (secretKey.IsNull())
                    {
                        return(ResponseOutput.NotOk("解密失败!", 1));
                    }
                    input.Password = DesEncrypt.Decrypt(input.Password, secretKey);
                    await Cache.DelAsync(passwordEncryptKey);
                }
                else
                {
                    return(ResponseOutput.NotOk("解密失败!", 1));
                }
            }

            #endregion 解密

            var password = MD5Encrypt.Encrypt32(input.Password);
            if (user.Password != password)
            {
                return(ResponseOutput.NotOk("密码输入有误!", 4));
            }

            var authLoginOutput = Mapper.Map <AuthLoginOutput>(user);

            if (_appConfig.Tenant)
            {
                var tenant = await _tenantRepository.Select.DisableGlobalFilter("Tenant").WhereDynamic(user.TenantId).ToOneAsync(a => new { a.TenantType, a.DataIsolationType });

                authLoginOutput.TenantType        = tenant.TenantType;
                authLoginOutput.DataIsolationType = tenant.DataIsolationType;
            }

            //登录清空用户缓存
            await Cache.DelAsync(string.Format(CacheKey.UserInfo, user.Id));

            return(ResponseOutput.Ok(authLoginOutput));
        }
 public async Task <IResponseOutput> Login(AuthLoginInput input)
 {
     return(await _authServices.LoginAsync(input));
 }
Exemple #15
0
        /// <summary>
        /// Does Not Throw Exceptions.
        /// </summary>
        public virtual Task <ItemResult <AccountInfo> > LoginAsyncSafe(AuthLoginInput info, Action <bool> onProcessing = null)
        {
            return(base.ExecuteFunctionAsync("LoginAsyncSafe", async delegate()
            {
                ItemResult <AccountInfo> result = new ItemResult <AccountInfo>()
                {
                    success = false
                };
                bool isOutdated = false;
                try
                {
                    ItemResult <AccountInfo> loginResult = null;
                    this.LogOff(false, false);

                    loginResult = await this.PostItemUnSafeAsync(onProcessing, async delegate()
                    {
                        StencilSDK client = this.GetSDK(false);
                        return await client.Auth.LoginAsync(info);
                    });

                    if (loginResult.IsSuccess())
                    {
                        result = loginResult;
                    }
                    else
                    {
                        result.success = false;
                        result.meta = loginResult.meta;
                        result.message = loginResult.GetMessage();
                    }
                }
                catch (Exception ex)
                {
                    ex = ex.FirstNonAggregateException();

                    base.LogError(ex, "LoginAsyncSafe");

                    result.success = false;
                    isOutdated = this.IsOutdated(ex);
                    if (isOutdated)
                    {
                        this.Outdated(string.Empty);
                    }
                    result.message = ex.Message;
                    EndpointException endpointException = ex as EndpointException;
                    if (endpointException != null)
                    {
                        result.meta = ((int)endpointException.StatusCode).ToString();
                    }
                }

                if (result.IsSuccess())
                {
                    this.CacheHost.CachedUserSet(result.item);
                    this.CurrentAccount = result.item;
                    this.UserCacheClear();
                    AppPreferences prefs = new AppPreferences();
                    this.CacheHost.PersistentDataSet(false, CACHE_FILENAME_APP_PREFS, prefs);
                    this.AppPreferences = prefs;

                    this.ViewPlatform.OnLoggedOn();
                }
                else
                {
                    this.LogOff(!isOutdated, false);
                    if (string.IsNullOrEmpty(result.message))
                    {
                        result.message = "Could not log in to your account.";
                    }
                }

                return result;
            }));
        }