我對處理保持用戶登錄應用程序的最佳方式有疑問。我想知道如何實現與Snapchat等應用程序類似的功能,即使在用戶關閉/打開手機時也能保持用戶登錄狀態。我是否認爲他們在設備上本地存儲授權密鑰以達到此目的?我從來不想登錄用戶,除非他們點擊「註銷」按鈕,但我沒有使用授權密鑰的經驗,以保持人們登錄。這種驗證/登錄用戶的方法是否安全?
所以我想知道如果下面的方法將是一個很好的方法使用,或者如果它不安全/將採取什麼更好的方法。 首先,我在我的數據庫中有一個表格,內容如下: device_id,用戶名,密碼,logged_in。
我目前的方法:
- 當應用程序啓動時,獲取設備的唯一ID。
- 使用Javascript/php將ID發送到數據庫。
- 使用SQL檢查數據庫中的ID。
- 如果ID不在數據庫中,或者,如果與該ID相關聯的「logged_in」列表示「0」(表示未登錄),那麼這意味着它是新設備/並且可能是新用戶或用戶當前從該設備註銷(由於在前一個會話結束時按下「註銷」按鈕 - 「註銷」按鈕將「logged_in」列更改爲「0」)。
- 因此,該應用程序現在向用戶提供輸入登錄詳細信息(用戶名&密碼)的選項,或註冊應用程序(創建用戶名&密碼)。
- 如果這些進程是成功的,數據庫更新,並且用戶可以使用的應用程序(以下簡稱「LOGGED_IN」一欄被改成「1」 - 這意味着用戶登錄)。
- 每當用戶打開應用程序,如果他們的ID在數據庫中,並且關聯的「logged_in」列=「1」,則不需要登錄屏幕,他們已經登錄並且可以立即訪問應用程序。
- 如果某人在一臺設備上登錄其帳戶,但獲取了新設備並登錄該設備(使用其用戶名和密碼),則其存儲的設備ID將被其新設備ID覆蓋。 - 這應該使它們顯示在他們自己的設備上(因爲他們的舊ID不會被發現,所以他們會被提示重新輸入他們的用戶名和密碼,如果他們回到他們的舊手機)。
這是一個穩定和安全的方法來驗證用戶的詳細信息,並保持人們登錄到應用程序?他們仍然能夠通過按下「註銷」按鈕註銷他們,他們會將「logged_in」列從「1」更改爲「0」。但是這種方法可能存在缺陷?我真的很感激任何建議,最好的方式來做到這一點。提前致謝!