Beispiel #1
0
        public async Task <IActionResult> Login([FromBody] LoginCmd request)
        {
            try
            {
                var result = await _service.LoginUser(request);

                return(Ok(result));
            }
            catch (BusinessLogicException ex)
            {
                return(BadRequest(new Response
                {
                    Status = false,
                    Message = ex.Message
                }));
            }
            catch (Exception e)
            {
                return(BadRequest(new Response
                {
                    Status = false,
                    Message = ErrorMessages.UnkownError
                              //e.Message
                }));
            }
        }
Beispiel #2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var user = LoginCmd.Execute(model.UserName, model.Password);
                    if (user != null)
                    {
                        FormsAuthentication.SetAuthCookie(user.Identity.Name, false);
                        if (ControllerContext.HttpContext.Session != null)
                        {
                            ControllerContext.HttpContext.Session["user"] = model.UserName;
                        }

                        //System.Web.HttpContext.Current.User =new System.Security.Principal.GenericPrincipal()
                        FormsAuthentication.RedirectFromLoginPage(model.UserName, false);
                        return(RedirectToLocal("~/JusHome/Index"));
                    }
                }
                model.ShowMessage = true;
                return(View("Login", model));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ManejadorExcepciones.GetMensaje(ex));
                //Flash.Error();
            }
            return(null);
            //return System.Web.UI.WebControls.View(model);
        }
        public async Task <string> ChekcLoginCmdValidatableAsync(LoginCmd cmd, string clientIp, DateTime timeNow)
        {
            if (cmd.Account.IsNullOrWhiteSpace())
            {
                return("账号不可为空");
            }
            if (cmd.Password.IsNullOrWhiteSpace())
            {
                return("密码不能为空");
            }
            if (cmd.Password.Length > 30)
            {
                return("密码超长");
            }
            if (!await _memberService.ExistAccountAsync(cmd.Account).ConfigureAwait(false))
            {
                await _memberLoginLogService.NewLogAsync(new MemberLoginLog
                {
                    Account  = cmd.Account,
                    Password = cmd.Password,
                    CheckOn  = timeNow,
                    IsPass   = false,
                    Reason   = "账号不存在",
                    ClientIp = clientIp
                }).ConfigureAwait(false);

                return("账号不存在");
            }
            var memberAccount = await _memberService.GetMemberAccountAsync(cmd.Account).ConfigureAwait(false);

            if (memberAccount.IsLockout)
            {
                await _memberLoginLogService.NewLogAsync(new MemberLoginLog
                {
                    Account  = cmd.Account,
                    Password = cmd.Password,
                    CheckOn  = timeNow,
                    IsPass   = false,
                    Reason   = "账号被锁定",
                    ClientIp = clientIp
                }).ConfigureAwait(false);

                return("账号被锁定");
            }
            if (memberAccount.Password != HashGenerator.Encode(cmd.Password, memberAccount.PasswordFormat, memberAccount.PasswordSalt))
            {
                await _memberLoginLogService.NewLogAsync(new MemberLoginLog
                {
                    Account  = cmd.Account,
                    Password = cmd.Password,
                    CheckOn  = timeNow,
                    IsPass   = false,
                    Reason   = "密码不匹配",
                    ClientIp = clientIp
                }).ConfigureAwait(false);

                return("密码不匹配");
            }
            return(null);
        }
        void OnErrorOccur(object sender, ModelEventArgs e)
        {
            switch (e.Type)
            {
            case ModelEventType.Exception:
                Forms.MessageBox.Show(e.ModelException.Message);
                break;

            case ModelEventType.ConnectMeesage:
                FailedMessage = e.FailedMessage;
                break;

            case ModelEventType.ErrorMessage:
                MessageBox.Show(e.ErrorMessage);
                break;

            case ModelEventType.ServerTimeout:
                _tickTimer.Stop();
                Forms.MessageBox.Show(e.ErrorMessage);
                LoginCmd.Execute(null);
                break;

            default:
                break;
            }
        }
Beispiel #5
0
        public async Task <Response <AuthenticationToken> > LoginUser(LoginCmd request)
        {
            var user = await _userManager.FindByNameAsync(request.UserName);

            if (user == null)
            {
                throw new BusinessLogicException("رکوردی با این مشخصات یافت نشد");
            }
            var userHasValidPassword = await _userManager.CheckPasswordAsync(user, request.Password);

            if (!userHasValidPassword)
            {
                throw new BusinessLogicException("نام کاربری و یا کلمه عبور را درست وارد نکرده اید");
            }

            var userRoles = await _userManager.GetRolesAsync(user);

            var userRole   = userRoles.FirstOrDefault();
            var userClaims = await _userManager.GetClaimsAsync(user);

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName),
                    new Claim("id", user.Id),
                }),
                Expires            = DateTime.UtcNow.Add(TimeSpan.Parse(_configuration["Jwt:TokenLifeTime"])),
                SigningCredentials =
                    new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(new Response <AuthenticationToken>
            {
                Status = true,
                Message = "success",
                Data = new AuthenticationToken
                {
                    Token = tokenHandler.WriteToken(token),
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    FullName = $"{user.FirstName} {user.LastName}",

                    UserId = user.Id,
                    UserName = user.UserName,

                    Avatar = user.Avatar,


                    Roles = userRoles,
                    Claims = userClaims.Select(c => c.Type).ToList()
                },
            });
        }
Beispiel #6
0
        public LoginViewModel(Action closeAction)
        {
            //关闭窗口
            this._closeAction = closeAction;

            //自动登录
            if (IsAutoLogin)
            {
                LoginCmd.Execute(null);
            }
        }
Beispiel #7
0
    private void DoSuccess()
    {
        var account  = _inputAccount.text;
        var password = _inputPassword.text;
        var cmd      = new LoginCmd()
        {
            account = account, password = password
        };

        Net.instance.SendCmd(cmd);
    }
Beispiel #8
0
        private void OnLogin(IScsServerClient sc, LoginCmd cmd)
        {
            Thread.Sleep(3000);

            LoginCmdAck ack = new LoginCmdAck();

            ack.RepliedMessageId = cmd.MessageId;
            ack.sender_name      = this_name;
            ack.status           = 0;

            Helper.tcp_server_send(sc, ack);
        }
Beispiel #9
0
        public LoginViewModel(Action closeAction)
        {
            //关闭窗口
            _closeAction = closeAction;

            InitUserConfig();
            InitCommand();

            //自动登录
            if (IsAutoLogin)
            {
                LoginCmd.Execute();
            }
        }
Beispiel #10
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //var user = await UserManager.FindAsync(model.UserName, model.Password);
                    //LoginCmd.Execute(model.UserName, model.Password);
                    //if (user != null)
                    //JusNucleo.Bl.LoginCmd.Execute(model.UserName, model.Password)

                    //Membership.ValidateUser(model.UserName, model.Password);
                    var user = LoginCmd.Execute(model.UserName, model.Password);
                    if (user != null)
                    {
                        //AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                        //var identity = await UserManager.CreateIdentityAsync(A, DefaultAuthenticationTypes.ApplicationCookie);
                        //AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
                        //SignInAsync(user, model.RememberMe);

                        FormsAuthentication.SetAuthCookie(user.Identity.Name, false);
                        //var x=UsuarioActual.Login;
                        //var usuario = UsuarioActual;
                        return(RedirectToLocal("./Principal"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Usuario o clave Incorrecta");
                    }
                }

                // If we got this far, something failed, redisplay form
                return(View(model));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ManejadorExcepciones.GetMensaje(ex));
                //Flash.Error();
            }
            return(View(model));
        }
        private async Task <Response> RealLogin(LoginCmd cmd, DateTime timeNow)
        {
            await _memberLoginLogService.NewLogAsync(new MemberLoginLog
            {
                Account  = cmd.Account,
                Password = cmd.Password,
                CheckOn  = timeNow,
                IsPass   = true,
                Reason   = "登录成功",
                PassOn   = timeNow,
                ClientIp = ClientIP
            }).ConfigureAwait(false);

            var memberAccount = await _memberService.GetMemberAccountAsync(cmd.Account).ConfigureAwait(false);

            var token = await _memberTokenService.NewMemberTokenAsync(memberAccount.MemberId, cmd.ClientType, ClientIP);

            return(Ok(new
            {
                TokenString = token.ToString(),
                TokenObjectId = token,
                MemberInfo = await _memberService.GetMemberInfoAsync(memberAccount.MemberId).ConfigureAwait(false)
            }));
        }
Beispiel #12
0
        private void p1_client_print(bool want_report, bool want_dcm)
        {
            bool print_dcm_ok    = false;
            bool print_report_ok = false;

            try
            {
                ui_pre_print();

                //根据实际情况更新打印需求
                want_report = want_report && this.lblReportPrintFlag.Text.Contains("打印");
                want_dcm    = want_dcm && this.lblDcmPrintFlag.Text.Contains("打印");

                //实际情况不允许打印
                if (!want_report && !want_dcm)
                {
                    return;
                }

                #region 多次打印,需身份验证
                string printer_id        = "";
                bool   need_verification = (want_report && this.lblReportPrintFlag.Text.Contains("已")) ||
                                           (want_dcm && this.lblDcmPrintFlag.Text.Contains("已"));
                if (need_verification)
                {
                    LoginUserItem item = get_login();
                    if (item == null)
                    {
                        return;
                    }

                    start_p1_tcp_client();
                    connect_p1_tcp_client(_p1_server_ip, _p1_server_port);

                    Helper.add_text(this.txtMsg,
                                    string.Format("{0}连接数据服务器P1: {1}{0}",
                                                  Environment.NewLine,
                                                  (Helper.is_tcp_client_normal(_p1_tcp_client) ? "成功" : "失败")));
                    Helper.add_text(this.txtMsg,
                                    string.Format("{0}向数据服务器P1发身份验证命令, 等待服务器P1返回结果...{0}",
                                                  Environment.NewLine));

                    //发验证命令
                    LoginCmd login = new LoginCmd();
                    login.sender_name           = this_name;
                    login.login_user.login_name = item.login_name;
                    login.login_user.login_psw  = item.login_psw;
                    LoginCmdAck login_ack = Helper.tcp_client_send_and_response(_p1_tcp_client, login) as LoginCmdAck;

                    Helper.add_text(this.txtMsg,
                                    string.Format("{0}数据服务器P1返回身份验证结果: {1}{0}",
                                                  Environment.NewLine,
                                                  (login_ack == null ? "失败" : (login_ack.status != 0 ? "失败" : "成功"))));

                    if (login_ack == null)
                    {
                        throw new MsgBoxException("通信异常", "请确认与数据服务器P1之间的网络连接是否正常.");
                    }
                    if (login_ack.status != 0)
                    {
                        throw new MsgBoxException("验证失败",
                                                  string.Format("密码错误或者工号不存在.错误代码={0}.", login_ack.status));
                    }

                    //记录工号,后面备用
                    printer_id = item.login_name;
                }
                #endregion

                //可以考虑将三项任务中的2项改为并行执行,调用线程等待这2项任务的返回结果
                Task <bool> task_dcm    = null;
                Task <bool> task_report = null;
                #region 胶片本地打印
                if (is_local_print_dcm && want_dcm)
                {
                    task_dcm = Task.Factory.StartNew(() => {
                        return(local_print_dcm(this.lblUserID.Text.Trim(), printer_id));
                    });
                }
                #endregion
                #region 报告本地打印
                if (is_local_print_report && want_report)
                {
                    task_report = Task.Factory.StartNew(() => {
                        return(local_print_report(this.lblUserID.Text.Trim(), printer_id));
                    });
                }
                #endregion
                #region 报告和(/或者)胶片用服务器打印
                try
                {
                    if ((!is_local_print_report && want_report) ||
                        (!is_local_print_dcm && want_dcm))
                    {
                        Helper.add_text(this.txtMsg,
                                        string.Format("{0}连接数据服务器P1: {1}{0}",
                                                      Environment.NewLine,
                                                      (Helper.is_tcp_client_normal(_p1_tcp_client) ? "成功" : "失败")));

                        string which = "";
                        if ((!is_local_print_report && want_report) &&
                            (!is_local_print_dcm && want_dcm))
                        {
                            which = "报告和胶片";
                        }
                        else if (!is_local_print_report && want_report)
                        {
                            which = "报告";
                        }
                        else
                        {
                            which = "胶片";
                        }
                        Helper.add_text(this.txtMsg,
                                        string.Format("{1}向数据服务器P1发打印{0}命令, 等待服务器P1返回结果...{1}",
                                                      which, Environment.NewLine));

                        start_p1_tcp_client();
                        connect_p1_tcp_client(_p1_server_ip, _p1_server_port);

                        //发打印命令
                        ServerPrintUserCmd spuc = new ServerPrintUserCmd();
                        spuc.sender_name  = this_name;
                        spuc.user_id      = this.lblUserID.Text.Trim();
                        spuc.printer_id   = printer_id;
                        spuc.print_dcm    = !is_local_print_dcm && want_dcm;
                        spuc.print_report = !is_local_print_report && want_report;
                        ServerPrintUserCmdAck spuc_ack = Helper.tcp_client_send_and_response(_p1_tcp_client, spuc, 60000) as ServerPrintUserCmdAck;

                        Helper.add_text(this.txtMsg,
                                        string.Format("{0}数据服务器P1返回打印结果: {1}{0}",
                                                      Environment.NewLine, (spuc_ack == null ? "失败" : "成功")));

                        if (spuc_ack == null)
                        {
                            throw new MsgBoxException("通信异常", "请确认与数据服务器P1之间的网络连接是否正常.");
                        }
                        if (spuc_ack.print_dcm)
                        {
                            Helper.add_text(this.txtMsg,
                                            string.Format("{0}打印胶片: {1}{0}",
                                                          Environment.NewLine,
                                                          (spuc_ack.print_dcm_ack == 0 ? "成功" : "失败")));
                        }
                        if (spuc_ack.print_report)
                        {
                            Helper.add_text(this.txtMsg,
                                            string.Format("{0}打印报告: {1}{0}",
                                                          Environment.NewLine,
                                                          (spuc_ack.print_report_ack == 0 ? "成功" : "失败")));
                        }

                        if (spuc_ack.print_dcm)
                        {
                            print_dcm_ok = (spuc_ack.print_dcm_ack == 0);
                        }
                        if (spuc_ack.print_report)
                        {
                            print_report_ok = (spuc_ack.print_report_ack == 0);
                        }
                    }
                }
                catch (MsgBoxException ex)
                {
                    Helper.add_text(this.txtMsg,
                                    string.Format("{0}{1}, {2}{0}",
                                                  Environment.NewLine, ex.Title, ex.Message));
                }
                catch (System.Exception ex)
                {
                    EzLogger.GlobalLogger.warning(string.Format("{0}{2}{1}{2}",
                                                                ex.Message, ex.StackTrace, Environment.NewLine));
                }
                #endregion
                if (task_dcm != null)
                {
                    task_dcm.Wait();
                    print_dcm_ok = task_dcm.Result;
                }
                if (task_report != null)
                {
                    task_report.Wait();
                    print_report_ok = task_report.Result;
                }
            }
            catch (MsgBoxException ex)
            {
                Helper.add_text(this.txtMsg,
                                string.Format("{0}{1}, {2}{0}",
                                              Environment.NewLine, ex.Title, ex.Message));
            }
            catch (System.Exception ex)
            {
                EzLogger.GlobalLogger.warning(string.Format("{0}{2}{1}{2}",
                                                            ex.Message, ex.StackTrace, Environment.NewLine));
            }
            finally
            {
                stop_p1_tcp_client();

                ui_post_print(print_dcm_ok, print_report_ok);
            }
        }
Beispiel #13
0
 public LoginPageVM(string dbContextName) : base(dbContextName)
 {
     ClearFeedback();
     LoginCmd = new LoginCmd(this);
 }
 public void Logear()
 {
     RegisterDependency.Init();
     Assert.AreEqual(true, LoginCmd.Execute("admin", "Adm1nAdm1n").Identity.IsAuthenticated);
 }