php開發(fā)app接口,用戶登錄問題
情況是這樣的,之前的用戶登錄接口,登錄成功以后服務(wù)器不存session
,可能在app那端存著吧。所以即便用戶登錄成功,在調(diào)某些接口的時(shí)候,需要user_id
還是要當(dāng)作參數(shù)傳遞過去,而不是從服務(wù)器的 session
里獲取。
今天想修改登錄注冊(cè)的接口,我同事說app接口沒有session
的概念,但是我總覺得應(yīng)該有其他方式將用戶會(huì)話存在服務(wù)器。
所以我想請(qǐng)教各位大神:
1. php開發(fā)app接口有沒有`session`的概念?
2. 如果沒有,用戶會(huì)話是怎么處理的?就是當(dāng)前是否在登錄狀態(tài)
謝謝大家!
首先你弄個(gè)登陸接口,app調(diào)用這個(gè)接口,你驗(yàn)證他傳遞過來的username password 之后,給他返回一個(gè) token 。
token 你建個(gè)表保存,表里存 user_id token expire_data 等字段,注意token 和 user_id 是唯一的。
以后他每次請(qǐng)求其他的接口,只需要把這個(gè)token帶給你,你驗(yàn)證token就可以。
傳遞的token 設(shè)置加密/設(shè)置過期/保證唯一 基本上就可以了。
1.請(qǐng)求頭里帶用戶 username
和 password
,到服務(wù)器端做驗(yàn)證,通過才繼續(xù)下邊業(yè)務(wù)邏輯。
優(yōu)點(diǎn):防止了服務(wù)器端 api
被隨意調(diào)用。
缺點(diǎn):每次都交互用戶名和密碼,交互量大,且密碼明文傳輸不安全。
2.第一次請(qǐng)求,要求 username
和 password
,驗(yàn)證通過,發(fā)送 cookie
到客戶端, username
和 password
,驗(yàn)證通過,發(fā)送 cookie
到客戶端, app
保存 cookie
值。
每次請(qǐng)求帶上 cookie
。
優(yōu)點(diǎn):和 pc
保存 cookie
值。
cookie
。優(yōu)點(diǎn):和 pc
上瀏覽器認(rèn)證的原理一樣了。
app
以上兩點(diǎn),只有注冊(cè)用戶,才能有權(quán)訪問業(yè)務(wù)邏輯。
有大量的不需要注冊(cè)數(shù)據(jù)apitoken
3.制定一個(gè)
缺點(diǎn):隨機(jī)串生成規(guī)則要保密。????如果我的答案解決了你的問題,請(qǐng)點(diǎn)擊
采納答案
可以這樣弄,不同用戶通過授權(quán)接口獲得不同的token,對(duì)token 設(shè)置好過期時(shí)間,讓client每次請(qǐng)求把token放在header內(nèi),并定時(shí)更新token
用token來代替?zhèn)鹘y(tǒng)的存儲(chǔ)在客戶端cookie中的session_id,然后token在redis等數(shù)據(jù)庫(kù)中作為鍵名,鍵值則為用戶uid,并且可以通過自帶的過期機(jī)制來模擬session_id
這是我心懷疑惑的時(shí)候,在我們站內(nèi)提問的
你同事說 app沒有session概念,我覺得不準(zhǔn)確!希望我之前的提問對(duì)你有幫助!
登錄是服務(wù)端生成登錄成功的標(biāo)識(shí)返回給客戶端,客戶端請(qǐng)求是帶上登錄標(biāo)識(shí),服務(wù)端通過登錄表示驗(yàn)證用戶信息
安全的做法是access_token
。這點(diǎn)可以看看微信的api接口;
簡(jiǎn)單做法,就是user_id
;