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