2017-11-30 1 views
1

클래스 SyncUser을 확인했으며 메소드 currentUser()의 정의는 다음과 같습니다. 로그인되어 있고 계속 유효한 현재 사용자를 반환합니다.영역 - .currentUser()가 현재 모바일 장치에 로그인 한 상태로 전달합니까, 아니면 다른 의미입니까?

내가 알고 싶은 것은,이 방법을 실행할 때 정확하게 전달되는 것입니다. 전달 된 가치가 얼마나 신뢰할 수 있으며 "현재 사용자"의 정의에 대한 제한은 무엇입니까?

감사합니다.

답변

2

SyncUser.currentUser()SyncUser.login() 또는 SyncUser.loginAsync()을 사용하여 특정 장치에 로그인 한 단일 SyncUser를 검색하는 편리한 방법입니다. 단일 사용자가 로그인 한 경우에만 작동하며 그렇지 않은 경우 SyncUser.allUsers()을 사용해야합니다.

일반적으로 앱을 다시 시작할 때 필요합니다. 그런 다음 SyncUser이 이미 있는지 확인할 수 있으므로 다시 로그인 할 필요가 없습니다. 이것은 장치가 오프라인이고 로그인 할 수없는 경우에 유용 할 수 있습니다.

SyncUser는 기본 수명이 10 년인 액세스 토큰으로 표시되므로이 컨텍스트에서 유효한 것은 "아직 만료되지 않은 서버에서 부여한 액세스 토큰"을 의미합니다.

물론 해당 정보는 클라이언트에서 완벽하게 유효성을 검사 할 수 없습니다. 예를 들어 서버가 특정 토큰에 대한 정보를 잃어 버리는 백업에서 복원 된 경우 클라이언트는 토큰이 유효하다고 생각할 수 있습니다. 이 경우 SyncConfiguration.Builder.errorHandler(..)에 대한 콜백을 수신 할 수 있으며 사용자를 다시 응답 할 수 있습니다.

현재이 예제에서는 실제로이의 예를 볼 수 있습니다 https://github.com/realm/realm-java/tree/master/examples/objectServerExample

+0

내가 필요한 설명. SyncUser를 액티비티간에 전달하려고했는데, 사용자가 액세스 권한이 있는지 확인합니다. 하지만 SyncUser.currentUser()를 사용하여 복구 할 수 있으므로 필요하지 않습니다. 감사! – chaintrooper

+0

그래서 사용자가 장치를 다시 시작하더라도 액세스 토큰은 유효하며'SyncUser.currentUser()'는 실제 연결된 사용자를 반환 할 것입니까? 간단히 메커니즘이 어떻게 설계되었는지 이해하고 싶습니다. 의미, 어떤 경우에 사용자가 실제로 다시 로그인해야합니까? – chaintrooper

+0

예 당신이 돌아 오는 사용자는 유효하고 연결되어 있습니다. 수동으로'user.logout()'만 호출하면 다시 로그인 할 수 밖에 없습니다. 많은 앱에서 사용자가 로그인 한 후에는 로그 아웃하지 않으려 고합니다. 단지 불필요한 단계 일뿐입니다. 또한 사용자가 앱을 종료 할 때 사용자를 로그 아웃하면 오프라인 인 경우 앱을 사용할 수 없게되는 경우가 있습니다. 이는 렘의 주요 이점 중 하나입니다. –

관련 문제