Esempio n. 1
0
        public LoginResult <TUser> Login(string userName, string password, DateTime loginTime, string loginIp)
        {
            LoginResult <TUser> result = new LoginResult <TUser>();

            userName = userName.Trim();
            var user = _userManager.FindByName <TUser, int>(userName);

            if (user == null)
            {
                result = new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserNotExist);
            }

            else
            {
                var lastUserInfo = CloneObject(user) as TUser;
                user = _userManager.Find <TUser, int>(userName, password);
                if (user == null)
                {
                    result = new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserPasswordIncorrect, lastUserInfo);
                }
                else
                {
                    if (user.Status == Enumeration.UserStatus.Disable)
                    {
                        result = new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserDisabled, lastUserInfo);
                    }
                    else
                    {
                        if (user.IsDelete)
                        {
                            result = new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserDeleted, lastUserInfo);
                        }
                        else
                        {
                            user.LastLoginTime = loginTime;
                            user.LastLoginIp   = loginIp;
                            _db.SaveChanges();

                            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                            var identity = _userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
                            AuthenticationManager.SignIn(new AuthenticationProperties()
                            {
                                IsPersistent = false
                            }, identity);


                            result = new LoginResult <TUser>(Enumeration.LoginResult.Success, Enumeration.LoginResultTip.VerifyPass, lastUserInfo);
                        }
                    }
                }
            }


            return(result);
        }
Esempio n. 2
0
        public LoginResult <TUser> Login(string userName, string password, bool isPersistent, SysUserLoginHistory userLoginHistory)
        {
            SysUserLoginHistory loginHis = new SysUserLoginHistory();

            userName = userName.Trim();
            var user = _userManager.FindByName <TUser, int>(userName);

            if (user == null)
            {
                return(new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserNotExist));
            }

            var lastUserInfo = user;

            loginHis.UserId    = user.Id;
            loginHis.LoginTime = DateTime.Now;
            loginHis.LoginType = userLoginHistory.LoginType;
            loginHis.Ip        = userLoginHistory.Ip;
            loginHis.Country   = userLoginHistory.Country;
            loginHis.Province  = userLoginHistory.Province;
            loginHis.City      = userLoginHistory.City;

            user = _userManager.Find <TUser, int>(userName, password);



            if (user == null)
            {
                loginHis.Description = "Login failed, password error";
                loginHis.Result      = Enumeration.LoginResult.Failure;
                _db.SysUserLoginHistory.Add(loginHis);
                _db.SaveChanges();

                return(new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserPasswordIncorrect, lastUserInfo));
            }

            if (user.IsDisable)
            {
                loginHis.Description = "Login failed, the account is disabled ";
                loginHis.Result      = Enumeration.LoginResult.Failure;
                _db.SysUserLoginHistory.Add(loginHis);
                _db.SaveChanges();

                return(new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserDisabled, lastUserInfo));
            }

            if (user.IsDelete)
            {
                loginHis.Description = "Login failed, the account has been deleted ";
                loginHis.Result      = Enumeration.LoginResult.Failure;
                _db.SysUserLoginHistory.Add(loginHis);
                _db.SaveChanges();
                return(new LoginResult <TUser>(Enumeration.LoginResult.Failure, Enumeration.LoginResultTip.UserDeleted, lastUserInfo));
            }


            loginHis.Description = "Login success ";
            loginHis.Result      = Enumeration.LoginResult.Success;
            _db.SysUserLoginHistory.Add(loginHis);

            user.LastLoginTime = loginHis.LoginTime;
            user.LastLoginIp   = loginHis.Ip;

            _db.SaveChanges();

            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
            var identity = _userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);

            AuthenticationManager.SignIn(new AuthenticationProperties()
            {
                IsPersistent = isPersistent
            }, identity);



            return(new LoginResult <TUser>(Enumeration.LoginResult.Success, Enumeration.LoginResultTip.VerifyPass, lastUserInfo));
        }