Ejemplo n.º 1
0
        public async Task <IActionResult> Login(LoginInputModel model)
        {
            if (ModelState.IsValid)
            {
                //验证用户名密码
                if (_userService.ValidateCredentials(model.LoginName, model.LoginPassword))
                {
                    AuthenticationProperties props = null;
                    //设置过期时间
                    if (_options.AllowRememberLogin && model.Remember)
                    {
                        props = new AuthenticationProperties
                        {
                            IsPersistent = true,
                            ExpiresUtc   = DateTimeOffset.UtcNow.Add(_options.RememberMeLoginDuration)
                        }
                    }
                    ;
                    ;

                    // issue authentication cookie with subject ID and username
                    var user = await _userService.SingleAsync(a => a.LoginName == model.LoginName);

                    //var identity = MembershipHelper.CreateIdentity(user);
                    //await _eventService.RaiseAsync(new UserLoginSuccessEvent(user.LoginName, user.ID.ToString(), user.Name));
                    await HttpContext.SignInAsync(user.ID.ToString(), user.Name, props, MembershipHelper.Claims(user));

                    var result = _interaction.IsValidReturnUrl(model.ReturnUrl);
                    return(Redirect(result ? model.ReturnUrl : "~/"));
                }
                ModelState.AddModelError(nameof(model.LoginName), _options.InvalidCredentialsErrorMessage);
            }

            // something went wrong, show form with error
            var vm = await _accountService.BuildLoginViewModelAsync(model);

            return(View(vm));
        }