コード例 #1
0
        public async Task <SSOLoginResponse> SSOLogin([FromBody] SSOLoginRequest request)
        {
            SSOLoginResponse response = new SSOLoginResponse();

            try
            {
                if (!string.IsNullOrEmpty(request.UserName) && !string.IsNullOrEmpty(request.Password))
                {
                    var user = _context.UserEntities.FirstOrDefault(a => a.CustomerPhone.Equals(request.UserName));
                    if (user == null)
                    {
                        response.Successful = false;
                        response.Message    = "用户名或密码错误!";
                        return(response);
                    }
                    if (user.CustomerPwd == request.Password)
                    {
                        return(response);
                    }
                }
                response.Successful = false;
                response.Message    = "用户名密码不能为空!";
            }
            catch (Exception ex)
            {
                response.Successful = false;
                response.Message    = ex.Message;
            }

            return(response);
        }
コード例 #2
0
        public async Task <HttpResponseMessage> LoginFromSSO([FromBody] LoginRequestPayload requestPayload)
        {
            using (var _db = new DatabaseContext())
            {
                try
                {
                    // Throws ExceptionService.InvalidModelPayloadException
                    ControllerHelpers.ValidateModelAndPayload(ModelState, requestPayload);

                    // Throws ExceptionService.InvalidGuidException
                    Guid userSSOID = ControllerHelpers.ParseAndCheckId(requestPayload.SSOUserId);

                    var _ssoLoginManager = new KFC_SSO_Manager(_db);
                    // user will get logged in or registered
                    var loginSession = await _ssoLoginManager.LoginFromSSO(
                        requestPayload.Email,
                        userSSOID,
                        requestPayload.Timestamp,
                        requestPayload.Signature);

                    _db.SaveChanges();
                    var redirectURL = "https://pointmap.net/#/login/?token=" + loginSession.Token;
                    var response    = SSOLoginResponse.ResponseRedirect(Request, redirectURL);
                    return(response);
                }
                catch (Exception e) when(e is InvalidGuidException ||
                                         e is InvalidModelPayloadException ||
                                         e is InvalidEmailException)
                {
                    var response = new HttpResponseMessage(HttpStatusCode.BadRequest);

                    response.Content = new StringContent(e.Message);
                    return(response);
                }
                catch (Exception e) when(e is UserAlreadyExistsException)
                {
                    var response = new HttpResponseMessage(HttpStatusCode.Conflict);

                    response.Content = new StringContent(e.Message);
                    return(response);
                }
                catch (Exception e) when(e is InvalidTokenSignatureException)
                {
                    var response = new HttpResponseMessage(HttpStatusCode.Unauthorized);

                    response.Content = new StringContent(e.Message);
                    return(response);
                }
                catch (Exception e)
                {
                    if (e is DbUpdateException ||
                        e is DbEntityValidationException)
                    {
                        _db.RevertDatabaseChanges(_db);
                    }
                    var response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
                    return(response);
                }
            }
        }
コード例 #3
0
        public async Task <JsonResult> UserLogin(string UserName, string UserPwd)
        {
            SSOLoginRequest request = new SSOLoginRequest {
                UserName = UserName, Password = MI.Web.Common.MD5Helper.Get_MD5(UserPwd)
            };
            SSOLoginResponse response = null;

            try
            {
                response = await accountService.SSOLogin(request);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "登录发生错误!");
                return(Json(ex.Message));
            }
            if (response.Successful)
            {
                return(Json("ok"));
            }
            return(Json(response.Message));
        }