본문 바로가기

개발

RxSwift로 비밀번호 체크 로직 만들기

728x90

RxSwift를 사용한 비밀번호 체크 로직 구현

RxSwift를 사용하여 비밀번호 유효성 검사 로직을 간편하고 효율적으로 구현할 수 있습니다. 다음은 기본적인 예시입니다.

1. 요구 사항 정의

  • 비밀번호 길이 (최소, 최대) 제한
  • 특수 문자, 숫자, 대문자, 소문자 포함 여부 검사
  • 이전 비밀번호와의 유사성 검사 (선택 사항)

2. UI 요소 및 ViewModel 설정

  • ViewController에서 비밀번호 입력 필드와 오류 메시지 레이블을 설정합니다.
  • ViewModel클래스를 만들고 비밀번호 검사 관련 속성과 메서드를 정의합니다.
import UIKit

import RxSwift



class PasswordViewController: UIViewController {



    @IBOutlet weak var passwordTextField: UITextField!

    @IBOutlet weak var errorMessageLabel: UILabel!



    private let viewModel = PasswordViewModel()

    private let disposeBag = DisposeBag()



    override func viewDidLoad() {

        super.viewDidLoad()



        setupBindings()

    }



    private func setupBindings() {

        passwordTextField.rx.text

            .bind(to: viewModel.passwordText)

            .disposed(by: disposeBag)



        viewModel.isValidPassword

            .bind(to: errorMessageLabel.rx.isHidden)

            .disposed(by: disposeBag)



        viewModel.errorMessage

            .bind(to: errorMessageLabel.rx.text)

            .disposed(by: disposeBag)

    }

}



class PasswordViewModel {

    let passwordText = BehaviorSubject<String>(value: "")

    let isValidPassword = BehaviorSubject<Bool>(value: true)

    let errorMessage = BehaviorSubject<String>(value: "")



    func validatePassword() {

        // 비밀번호 유효성 검사 로직 구현

        // 예시:

        let password = passwordText.value

        var errorMessage = ""



        if password.count < 8 {

            errorMessage = "비밀번호는 8자리 이상이어야 합니다."

        } else if !password.contains("[A-Z]") {

            errorMessage = "비밀번호에는 대문자가 포함되어야 합니다."

        } else if !password.contains("[a-z]") {

            errorMessage = "비밀번호에는 소문자가 포함되어야 합니다."

        } else if !password.contains("[0-9]") {

            errorMessage = "비밀번호에는 숫자가 포함되어야 합니다."

        } else if !password.contains("[!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?]") {

            errorMessage = "비밀번호에는 특수 문자가 포함되어야 합니다."

        }



        isValidPassword.onNext(errorMessage.isEmpty)

        errorMessageLabel.text = errorMessage

    }

}

 

3. 비밀번호 검사 로직 구현

  • ViewModel의 validatePassword 메서드에서 비밀번호 유효성 검사 로직을 구현합니다.
  • 비밀번호 길이, 특수 문자, 숫자, 대문자, 소문자 포함 여부 등을 검사합니다.
  • 검사 결과에 따라 isValidPassword BehaviorSubject에 true 또는 false 값을 전달하고, errorMessage BehaviorSubject에 오류 메시지 (있을 경우)를 설정합니다.

4. UI 업데이트 및 이벤트 처리

  • ViewController에서 ViewModel의 isValidPassword Observable을 구독하고 비밀번호 유효성에 따라 오류 메시지 레이블의 표시 여부를 제어합니다.
  • errorMessageObservable을 구독하고 오류 메시지가 있을 경우 레이블에 표시합니다.

참고:

  • 이 코드는 기본적인 예시이며 실제 구현에서는 사용자에게 더욱 명확한 피드백을 제공하고 다양한 유형의 비밀번호 검사를 추가할 수 있습니다.
  • RxSwift의 다양한 연산자와 API를 활용하여 더욱 복잡하고 효율적인 비밀번호 검사 로직을 구현할 수 있습니다.

추가 기능 구현:

  • 비밀번호 강도 지표 표시
  • 실시간 비밀번호 검사 및 피드백 제공
  • 이전 비밀번호와의 유사성 검사
  • 비밀번호 저장 및 관리 기능

RxSwift 사용하면 다음과 같은 이점이 있습니다.

'개발' 카테고리의 다른 글

RxSwift로 중복 이메일 체크 로직 만들기  (0) 2024.07.09
RxSwift로 회원가입 로직 만들기  (0) 2024.07.09
RxSwift로 로그인 로직 만들기  (0) 2024.07.09
RxSwift Share Operators  (0) 2024.07.09
RxSwift Combining Operators  (0) 2024.07.09