鍍金池/ 問答/PHP/ session和token是否可以2選一

session和token是否可以2選一

問題描述

總所周知小程序是沒cookie的 如何構(gòu)架比較好呢

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

首次登陸 服務(wù)端生成session信息存用戶信息 同時返回一個session——id給小程序 小程序每次過來都攜帶上 查找
我在考慮是否還要返回一個token 這個token是自己加密的東西 每次訪問服務(wù)器都攜帶過來揭秘 但是這個不和session——id 重復(fù)了嘛 因為這2個效果都差不多的 還有一個這個過期時間要怎么考慮呢 一個是session過期時間 一個是小程序緩存過期時間 希望大神給點建議

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

你期待的結(jié)果是什么?實際看到的錯誤信息又是什么?

回答
編輯回答
避風(fēng)港

session在mvc的模式中好用,方便。缺點是客戶端必須支持cookie,而且session默認(rèn)過期時間就幾十分鐘。

前后端分離、手機app、小程序等,用token好,一份token到處運行,放到緩存還是數(shù)據(jù)庫由你。
沒有代碼,參考 sso方案oauth2方案

2017年7月5日 14:53
編輯回答
淡墨

session是基于cookie的,如果cookie都沒有,更別說session了,除非你才用特殊配置才可以使用session,你可以直接才用token,在表中建立一個token字段,還有expires過期時間字段,問問題就解決了

2017年2月15日 21:35
編輯回答
風(fēng)畔

沒有接觸過小程序,所以對小程序的expire time不甚了解,至于session和token,session是占用服務(wù)器資源的,對于大量client的session存儲,需要考慮內(nèi)存開銷,內(nèi)存異常(清洗、jvm宕機等),不過這個可以通過第三方緩存服務(wù)器來輔助解決,session有自己維護(hù)生命周期,session不支持跨應(yīng)用(每個client會產(chǎn)生不同的sessionId),當(dāng)然,你可以自己去實現(xiàn)服務(wù)器上session緩存池,然后不同應(yīng)用傳遞相同sessionId來達(dá)到所謂的跨應(yīng)用。而token(一般我使用JWT生成)是client持有,服務(wù)端不維護(hù)(如果你想維護(hù)的話,也可以,但一般沒這個必要),所以對于服務(wù)端內(nèi)存占用上就有所節(jié)省,token中也可以存儲自己想要的數(shù)據(jù),可以支持做相關(guān)登錄認(rèn)證、授權(quán)認(rèn)證等,token支持跨應(yīng)用(應(yīng)為服務(wù)端不管token是哪個應(yīng)用過來的,只驗證是否成功),token自帶expire time,但本身不維護(hù)生命周期,所以一般token超時后,再使用的話,就會解析錯誤,如果要維護(hù)生命周期,可以自己實現(xiàn),我一般都是加個refresh time??偟膩碚f,session更適用WEB應(yīng)用系統(tǒng),token較適用APP應(yīng)用。

2018年1月19日 08:39