비동기 로그인 함수 설명
get_login_async
함수는 사용자가 사용자 이름과 비밀번호를 입력할 수 있는 창을 엽니다. 이 함수는 비동기 함수로, 사용자가 입력을 기다리는 동안 장치의 이벤트가 정상적으로 계속 실행됩니다. 사용자가 정보를 입력하고 "확인" 버튼을 누르면 asynchronousDialog
이벤트가 발생하며, 이 이벤트 동안 async_load
변수에 DS 맵이 저장됩니다. 이 맵은 "id", "status", "username", "password" 키를 포함하고 있으며, 사용자 입력은 "username"과 "password"에 저장됩니다.
함수 문법
get_login_async(name, password);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
username | String | 기본 사용자 이름 |
password | String | 기본 비밀번호 |
반환값
- 비동기 요청 ID
예제 코드
사용자의 로그인을 제어하는 객체의 생성 이벤트에서 다음과 같은 코드를 사용할 수 있습니다:
// Create Event
ini_open("Profile.ini");
u = ini_read_string("User", "0", "");
p = ini_read_string("User", "1", "");
ini_close();
login = get_login_async(u, p);
위 코드는 INI 파일을 열거나 존재하지 않으면 새로 생성하고, 그 파일에 저장된 사용자 이름과 비밀번호를 가져옵니다. 값이 존재하지 않으면 기본값인 빈 문자열("")이 반환됩니다. 이 값들은 get_login_async
함수에 사용되어 사용자에게 사용자 이름과 비밀번호를 요청하며, 요청 인덱스는 login
변수에 저장됩니다. 사용자가 정보를 제공할 때까지 게임과 이벤트는 정상적으로 계속 실행됩니다.
이제 비동기 코드가 실행되었으므로, 다음과 같이 비동기 이벤트에서 반환 값을 확인해야 합니다:
// Async Dialog Event
if (ds_map_find_value(async_load, "id") == login) {
u = ds_map_find_value(async_load, "username");
p = ds_map_find_value(async_load, "password");
}
위 코드는 async_load
DS 맵의 "id" 키를 확인하고, 그것이 login
변수에 저장된 값과 같으면 맵의 세부 정보를 해당 변수에 읽어옵니다. 이 변수들은 나중에 저장하거나 데이터베이스 값과 비교하는 데 사용할 수 있습니다.
활용 예제
- 비밀번호 암호화: 비밀번호를 저장하기 전에 암호화하여 보안을 강화합니다.
gml encrypted_password = encrypt_function(p);
- 데이터베이스와의 연동: 입력된 사용자 이름과 비밀번호를 데이터베이스와 비교하여 인증합니다.
gml if (check_credentials(u, p)) { // 로그인 성공 } else { // 로그인 실패 }
- 사용자 세션 관리: 로그인 성공 시 사용자 세션을 생성하여 사용자의 상태를 관리합니다.
gml create_user_session(u);
- UI 업데이트: 로그인 성공 후 UI를 업데이트하여 사용자에게 환영 메시지를 표시합니다.
gml show_welcome_message(u);
이러한 예제들은 get_login_async
함수를 활용하여 비동기적으로 사용자 인증을 처리하는 방법을 보여줍니다.