나는 android world를 처음 사용하며 설정을 저장하는 것과 관련하여 질문이 있습니다. 나는 그것을 예를 들어 설명하려고 노력할 것이다. 사용자가 앱과 계정을 동기화하는 gmail과 유사한 Android 앱이 있다고 가정 해 보겠습니다. 로그인/암호가 저장되어있어 휴대 전화의 전원을 끄더라도 여전히 로그인되어 있습니다. SharedPreferences에 별도의 파일로 데이터베이스에 저장되어 있습니까? 모든 설명을 주시면 감사하겠습니다.android에 데이터를 저장하는 위치
-1
A
답변
0
Google 및 기타 회사는 세션을 사용하여 사용자를 식별합니다. 그들은 모바일에 암호를 저장하지 않습니다. 첫 번째 로그인 후 서버는 사용자에게 고유 한 세션 ID를 발행하고 앱은 SharedPreferences에이 세션 ID를 저장할 수 있으며 그 이후에도 모든 연속적인 서버 요청은 인증을 위해이 세션 ID를 보내야합니다. 귀하의 경우 SharedPreferences에 모든 설정을 저장할 수 있지만 암호를 저장하는 것은 좋지 않습니다. 예를 들어 다양한 기능을 갖춘 게임을 만들 때와 같이 많은 양의 데이터를 저장하려는 경우 SQLite 데이터베이스를 사용하여 데이터를 저장하고 검색 할 수 있습니다.
편집 : 먼저 사용자 이름과 암호를 HttpUrlConnection을 사용하여 서버에 보냅니다. 그런 다음 서버 응답 헤더에서 쿠키를 추출해야합니다. 다음 코드는 서버 응답에서 쿠키를 구하는 방법을 보여줍니다,이 후
sharedPreferences.edit().putString("token", token).apply();
서버에 대한 연속적인 요청에 쿠키를 추가
String[] tokens;
List cookies = conn.getHeaderFields().get("Set-Cookie");
if (cookies != null) {
for (int i = 0; i < cookies.size(); i++) {
String cookieString = (String) cookies.get(i);
tokens = cookieString.split(";");
List<String> cookieHeaders = new ArrayList<>();
for (String str : tokens) {
if (str.contains("httponly")||str.contains("HttpOnly")) {
str = str.trim();
cookieHeaders.add(str);
} else {
Log.d("loginactivity","str "+str);
str = str.substring(0, str.indexOf("=")).trim();
cookieHeaders.add(str);
}
}
String token = cookieString;
}
}
당신은 공유 환경 설정에서 토큰을 넣을 수 있습니다.
String cookie = sharedPreferences.getString("token","");
httpConn.setRequestProperty("Cookie",cookie);
0
SQLite 데이터베이스에 데이터를 저장할 수 있습니다. 앱이 파일 시스템 권한에 액세스해야합니다.
승인 기능을 앱에 제공해야합니다. 확실히 세션 토큰을 앱에 보낼 수 있습니다. 그 주제에 대한 더 많은 정보를 제게 제공 할 수 있습니까? – kDoyle