Пример #1
0
        public async Task <IActionResult> Login(LoginValidateModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User logged in.");
                    return(RedirectToLocal(returnUrl));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return(RedirectToAction(nameof(Lockout)));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(View(model));
                }
            }
            return(View(model));
        }
Пример #2
0
        /// <summary>
        /// 登录验证请求
        /// </summary>
        /// <param name="loginValidateModel"></param>
        /// <returns></returns>
        public async Task <ResultModel <AuthResut <T> > > LoginAuthRequestAsync <T>(LoginValidateModel loginValidateModel) where T : class
        {
            var result = new ResultModel <AuthResut <T> >();

            if (loginValidateModel == null || string.IsNullOrWhiteSpace(loginValidateModel.UserName))
            {
                return(result.Failed("账号有误"));
            }

            if (_idsAuthentication == null)
            {
                return(result.Failed("未配置或注入IdsAuthentication配置"));
            }

            if (string.IsNullOrWhiteSpace(_idsAuthentication.AuthorityUrl))
            {
                return(result.Failed("请配置授权地址"));
            }

            if (string.IsNullOrWhiteSpace(loginValidateModel.ClientId))
            {
                return(result.Failed("未知请求客户端"));
            }

            var authorityUrl = "";

            if (_idsAuthentication.RequireHttpsMetadata)
            {
                authorityUrl = "https://" + _idsAuthentication.AuthorityUrl;
            }
            else
            {
                authorityUrl = "http://" + _idsAuthentication.AuthorityUrl;
            }

            var client  = new RestClient(authorityUrl);
            var request = new RestRequest("connect/token", Method.POST);

            request.AddParameter("client_id", loginValidateModel.ClientId);
            request.AddParameter("client_secret", "secret");
            request.AddParameter("grant_type", "password");
            request.AddParameter("username", loginValidateModel.UserName);
            request.AddParameter("password", loginValidateModel.Password);
            var resultData = (await client.ExecuteAsync <AuthResut <T> >(request)).Data;

            if (!string.IsNullOrEmpty(resultData.refresh_token))
            {
                return(result.Success(resultData));
            }
            else
            {
                return(result.Failed(resultData.error_description));
            }
        }