2013-10-14 42 views
0

答案可能因服務器端是否啓用而有所不同,我的第一個想法是編寫一個服務調用服務器來檢查最近登錄的設備的IMEI。問題是:因爲我們無法設置由於應用程序的性能問題,此服務每秒鐘都會向服務器發出調用,那麼解決此問題的辦法是什麼?我們如何確保從Android的其他設備登錄時從第一個設備註銷?

+0

你只需要過濾設備的PID的日誌 –

回答

2

我通常做的是在數據庫的用戶記錄中有一個會話標識符。登錄會生成一個新的標識符,並且需要伴隨每個請求。當他們從第二個位置登錄時,會生成一個新的標識符。第一個位置現在會顯示「您的會話已過期或您已從第二個位置登錄」錯誤消息。

PHP中的一個例子,因爲我的大部分服務器端都是用CakePHP完成的。與所串接的用戶的登錄名的

$user['User']['key'] = sha1($user['User']['userid'] . time . rand(0, 1000)); 

這僅僅是一個SHA1哈希(40個字符寬):用戶模型的簡化:

User (
    id INTEGER, 
    userid VARCHAR(32), 
    password VARCHAR(40), -- SHA1 
    key VARCHAR(40) -- SHA1 in size 
) 

的關鍵是在我的登錄方法生成如當前時期第二個和0到1000之間的隨機數。這將在服務器上的數據庫中並返回給客戶端。客戶端在登錄後爲每個請求附加?key =。

這有幫助嗎?

+0

感謝您的答案。你能舉一個關於這個標識符的小例子嗎? – akemko

+0

非常感謝。 – akemko

相關問題