W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
需要用戶登錄的網(wǎng)站基本上都離不開 Session,ThinkJS 里默認(rèn)支持多種類型的 Session,如:file
,db
,redis
等。
base
內(nèi)存方式file
文件類型db
數(shù)據(jù)庫(kù)類型redis
Redis 類型使用 db
類型的 Session 需要?jiǎng)?chuàng)建對(duì)應(yīng)的數(shù)據(jù)表,可以用下面的 SQL 語(yǔ)句創(chuàng)建:
DROP TABLE IF EXISTS `think_session`;
CREATE TABLE `think_session` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`cookie` varchar(255) NOT NULL DEFAULT "",
`data` text,
`expire` bigint(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cookie` (`cookie`),
KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
需要將 think_
改為 db 配置中的數(shù)據(jù)表前綴。
使用 redis
類型的 Session 需要配置 Redis,具體見 配置。
Session 默認(rèn)配置如下,可以在 src/common/config/session.js
中進(jìn)行修改:
export default {
type: "file",
name: "thinkjs", //對(duì)應(yīng) cookie 的名稱
path: runtimePrefix + "/session", // file 類型下緩存文件的目錄
secret: "", //Session 對(duì)應(yīng)的 cookie 是否需要加密
timeout: 24 * 3600, //過(guò)期時(shí)間,默認(rèn)為一天
cookie: { //Session 對(duì)應(yīng)的 cookie 配置項(xiàng)
length: 32
}
};
關(guān)于 Cookie 的配置請(qǐng)見 配置。
Controller 或 Logic 里可以通過(guò)下面的方式讀寫 Session:
export default class extends think.controller.base {
* indexAction(){
//獲取session
let value = yield this.session("userInfo");
}
}
export default class extends think.controller.base {
* indexAction(){
//設(shè)置 session
yield this.session("userInfo", data);
}
}
export default class extends think.controller.base {
* indexAction(){
//清除當(dāng)前用戶的 session
yield this.session();
}
}
http 對(duì)象上可以通過(guò) http.session
方法讀寫 Session,具體請(qǐng)見 API -> http。
可以通過(guò)下面的命令創(chuàng)建 Session Adapter:
thinkjs adapter session/foo
會(huì)創(chuàng)建文件 src/common/adapter/session/foo.js
,需要實(shí)現(xiàn)下面的方法:
export default class extends think.adapter.session {
/**
* init
* @param {Object} options []
* @return {} []
*/
init(options){
}
/**
* 獲取 Session
* @param {String} name []
* @return {Promise} []
*/
get(name){
}
/**
* 設(shè)置 Session
* @param {String} name []
* @param {Mixed} value []
*/
set(name, value){
}
/**
* 刪除 Session
* @param {String} name []
* @return {Promise} []
*/
delete(name){
}
/**
* 更新 Session
* @return {Promise} []
*/
flush(){
}
/**
* 清除過(guò)期的 Session
* @return {Promise} []
*/
gc(){
}
}
框架里的 Session 實(shí)現(xiàn)請(qǐng)見 https://github.com/75team/thinkjs/tree/master/src/adapter/session。
如何使用第三方的緩存 Adapter 請(qǐng)參見 Adapter -> 介紹。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: