簡體   English   中英

Android + PHP-保持用戶登錄

[英]Android + PHP - keep user logged

我想讓用戶保持登錄Android應用程序(使用Java No Kotlin)。

問題是:在每個用戶特定操作的php代碼中(例如:獲取用戶個人資料,用戶消息,編輯等),我檢查用戶會話ID,並且在登錄時此ID保存在android的SQLite中,但是此會話不會保留在服務器中,它會在2小時后被刪除(如果未使用),並且它不會返回唯一的ID,當會話被刪除時,下一個用戶登錄時會返回相同的ID,因此兩個小時后,第一個用戶將以其他用戶XD的身份登錄。

所以我該怎么做 ? 而是保存用戶名和密碼,並在每次檢查時登錄還是...?

登錄檢查的一部分:

檢查用戶的PHP代碼已登錄:

session_id($_POST['conKey']);
session_start();
//1- connect and check if connection key is correct
if (Model::connect() == false) {
    throw new Exception('error, could not connect to the database');
} else if (!isset($_SESSION['conKey'])) {
    throw new Exception('no connection found');
} else if ($_SESSION['conKey'] != $_POST['conKey']) {
    throw new Exception('no connection found');
}

這是我登錄時在php中返回會話ID的方式

session_start();

$conKey = session_id();
if (empty($conKey)) {
    throw new Exception('Faild to start session, please make sure your app is allowed to store sessions');
}
$_SESSION['conKey'] = $conKey;
echo json_encode(['connectionKey' => $conKey]);

Java代碼第I部分從SQLite發送conKey(登錄時保存的會話ID)

使用共享首選項存儲用戶名和密碼。 您還可以生成JWT令牌以成功登錄,並將JWT令牌保存在SharedPreferences中

我建議在成功登錄后生成令牌( 如何在PHP中生成令牌 )而不是會話ID。
將此令牌保存在數據庫中,現在將此生成的令牌發送到android客戶端。 對於每個API,請檢查令牌是否匹配。
除非您刪除令牌,否則android client將始終處於登錄狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM