JavaFX는 자바 기반의 GUI 프레임워크로, 풍부한 사용자 인터페이스를 만들 수 있습니다. 이 글에서는 JavaFX를 사용하여 로그인 및 사용자 인증 기능을 구현하는 방법에 대해 알아보겠습니다.
사용 도구
- JavaSE 8 이상
- JavaFX
회원 정보 저장하기
사용자 인증을 위해 회원 정보를 저장하는 방법에는 다양한 방법이 있습니다. 예를 들면 데이터베이스 (예: MySQL, PostgreSQL)를 사용하거나 파일에 정보를 저장할 수 있습니다. 이 글에서는 간단한 예제를 위해 파일에 정보를 저장하는 방법을 사용하겠습니다.
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.List;
public class UserDatabase {
private static final Path DATABASE_PATH = Path.of("users.txt");
public static void addUser(String username, String password) throws IOException {
String userLine = username + "," + password + System.lineSeparator();
Files.write(DATABASE_PATH, userLine.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
}
public static boolean authenticateUser(String username, String password) throws IOException {
List<String> users = Files.readAllLines(DATABASE_PATH);
for (String user : users) {
String[] userFields = user.split(",");
if (userFields[0].equals(username) && userFields[1].equals(password)) {
return true;
}
}
return false;
}
}
위의 예제는 UserDatabase
라는 클래스를 사용하여 회원 정보를 파일에 저장하고 인증을 수행합니다.
addUser
메소드는 사용자 이름과 비밀번호를 입력받아 파일에 저장합니다.authenticateUser
메소드는 사용자 이름과 비밀번호를 입력받아 파일의 회원 정보와 비교하여 사용자가 인증되는지 확인합니다.
로그인 기능을 구현하기 위해 위의 코드를 사용할 수 있습니다.
JavaFX 로그인 창 구현
이제 JavaFX를 사용하여 로그인 창을 구현해보겠습니다. 아래는 간단한 예제 코드입니다.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class LoginApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("로그인");
Label usernameLabel = new Label("사용자 이름");
TextField usernameTextField = new TextField();
Label passwordLabel = new Label("비밀번호");
PasswordField passwordField = new PasswordField();
Button loginButton = new Button("로그인");
loginButton.setOnAction(e -> {
String username = usernameTextField.getText();
String password = passwordField.getText();
try {
if (UserDatabase.authenticateUser(username, password)) {
// 인증 성공
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("로그인");
alert.setHeaderText(null);
alert.setContentText("인증되었습니다.");
alert.showAndWait();
} else {
// 인증 실패
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("로그인");
alert.setHeaderText(null);
alert.setContentText("아이디 또는 비밀번호가 일치하지 않습니다.");
alert.showAndWait();
}
} catch (IOException ex) {
ex.printStackTrace();
}
});
VBox layout = new VBox(10);
layout.getChildren().addAll(usernameLabel, usernameTextField, passwordLabel, passwordField, loginButton);
layout.setSpacing(10);
layout.setPadding(new javafx.geometry.Insets(10));
Scene scene = new Scene(layout, 300, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
}
위의 예제 코드에서는 LoginApp
클래스를 정의하여 JavaFX 애플리케이션을 시작합니다. start
메소드에서는 로그인 창을 구성하는 UI 요소를 생성하고, loginButton
이 클릭되었을 때 사용자 인증을 진행합니다.
UserDatabase
클래스를 사용하여 로그인 인증을 수행하며, 인증 결과에 따라 알림창을 표시합니다.
결론
JavaFX를 사용하여 로그인 및 사용자 인증 기능을 구현하는 방법을 알아보았습니다. 회원 정보를 저장하고, JavaFX를 사용하여 로그인 창을 만들고 인증을 수행하는 방법을 살펴보았습니다. 이를 기반으로 더 복잡한 애플리케이션에 인증 기능을 추가할 수 있습니다.
참고 자료: Oracle JavaFX 공식 문서