日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器session文件什么时候销毁,node中session存储与销毁,及session的生命周期

發布時間:2023/12/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器session文件什么时候销毁,node中session存储与销毁,及session的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、首先在使用session之前需要先配置session的過期時間等,在入口文件app.js中

app.use(express.session({

cookie: {

maxAge: config.get("secret.maxAge") //這里就是設置了session的過期時間,配置文件中是120000,即20分鐘。

},

secret: config.get("secret.sessionSecret"),

store: new RedisStore({

host: config.get("session_server").ip,

port: config.get("session_server").port,

prefix: config.get("session_server").prefix

//,db:'mydb' //此屬性可選。redis可以進行分庫操作。若無此參數,則不進行分庫

})

}));

}

2、在現在做的系統中,登陸請求成功之后,服務器存儲了一個session,代碼

req.session.username = user.userName;//存儲的是一個用戶名

3、用戶登陸之后的操作在路由的攔截器里面校驗session,校驗成功之后為此session增加20分鐘的過期時間。

exports.checkTBLogin = function(req, cb) {

if(req.session && req.session.loginTB){

console.log("req.session.---------------"+req.session.loginTB);

console.log(' req.session.cookie.expires============'+ req.session.cookie.expires);

req.session.cookie.expires= new Date(Date.now() + 20 * 60 * 1000);

return cb(null);

}else{

return cb(null, "login");

}

return cb(null, "login");

};

4、用戶點擊退出的額時候,銷毀session

req.session.destroy();

5、考慮到網站安全的問題,用戶做任何操作的時候都要驗證session。session的生命周期決定這種方式也不是絕對安全的,

假如用戶已經登錄了,攻擊者截取到了用戶發送到服務器的請求,用請求里的sessionid,去做其他操作,只要被截取的用戶在線,服務器上這個session沒有過期,那操作都能成功。

6、session的生命周期

當一個Session開始時,Servlet容器會創建一個HttpSession對象,那么在HttpSession對象中,可以存放用戶狀態的信息。

Servlet容器為HttpSession對象分配一個唯一標識符即Sessionid,Servlet容器把Sessionid作為一種Cookie保存在客戶端的?*瀏覽器* 中。

用戶每次發出Http請求時,Servlet容器會從HttpServletRequest對象中取出Sessionid,然后根據這個Sessionid找到相應的HttpSession對象,從而獲取用戶的狀態信息。

我們知道Session是存在于服務器端的,當把瀏覽器關閉時,瀏覽器并沒有向服務器發送

任何請求來關閉Session,自然Session也不會被銷毀,但是可以做一點努力,在所有的

客戶端頁面里使用js的window.onclose來監視瀏覽器的關閉動作,然后向服務器發送一

個請求來關閉Session,但是這種做法在實際的開發中也是不推薦使用的,最正常的辦法

就是不去管它,讓它等到默認的時間后,自動銷毀。

那么為什么當我們關閉瀏覽器后,就再也訪問不到之前的session了呢?

其實之前的Session一直都在服務器端,而當我們關閉瀏覽器時,此時的Cookie是存在

于瀏覽器的進程中的,當瀏覽器關閉時,Cookie也就不存在了。

其實Cookie有兩種:

一種是存在于瀏覽器的進程中;

一種是存在于硬盤上

而session的Cookie是存在于瀏覽器的進程中,那么這種Cookie我們稱為會話Cookie,

當我們重新打開瀏覽器窗口時,之前的Cookie中存放的Sessionid已經不存在了,此時

服務器從HttpServletRequest對象中沒有檢查到sessionid,服務器會再發送一個新的存

有Sessionid的Cookie到客戶端的瀏覽器中,此時對應的是一個新的會話,而服務器上

原先的session等到它的默認時間到之后,便會自動銷毀。

當在同一個瀏覽器中同時打開多個標簽,發送同一個請求或不同的請求,仍是同一個session;

當不在同一個窗口中打開相同的瀏覽器時,發送請求,仍是同一個session;

當使用不同的瀏覽器時,發送請求,即使發送相同的請求,是不同的session;

當把當前某個瀏覽器的窗口全關閉,再打開,發起相同的請求時,就是本文所闡述的,是不同的session,但是它和session的生命周期是沒有關系的.

【學習筆記】Spring中的BeanFactory和ApplicationContext 以及 Bean的生命周期(Y2-3-2)

BeanFactory和ApplicationContext Spring的IoC容器就是一個實現了BeanFactory接口的可實例化類. Spring提供了兩種不同的容器: 一種是最基本的Bean ...

Unity3d中MonoBehavior默認函數的執行順序和生命周期

Awake()在MonoBehavior創建后就立刻調用,在腳本實例的整個生命周期中,Awake函數僅執行一次:如果游戲對象(即gameObject)的初始狀態為關閉狀態,那么運行程序,Awake函數 ...

java之hibernate之session中對象的生命周期

1. session是用來執行對象的crud操作,并且session是對象事務工廠.session是線程級別的,所以生命周期比較短. 2.session中對象的生命周期圖: 3.session中對象的 ...

vue生命周期圖示中英文版Vue實例生命周期鉤子

vue生命周期圖示中英文版Vue實例生命周期鉤子知乎上近日有人發起了一個 “react 是不是比 vue 牛皮,為什么?” 的問題,Vue.js 作者尤雨溪12月4日正面回應了該問題.以下是尤雨溪回復 ...

12、生命周期-@Bean指定初始化和銷毀方法

12.生命周期-@Bean指定初始化和銷毀方法 Bean的生命周期:創建->初始化->銷毀 容器管理bean的生命周期 我們可以自定義初始方法和銷毀方法,容器在bean進行到當期那生命周期 ...

Flutter--Flutter中Widget、App的生命周期

前言 在App的開發過程中,我們通常都需要了解App以及各個頁面的生命周期,方便我們在App進入前臺時啟動一些任務,在進入后臺后暫停一些任務.同時,各個頁面的生命周期也很重要,每個頁面消失時要做一些內 ...

ionic中關于ionicView 的生命周期

當我們來回切換頁面時候,視圖被緩存下來,不用每次再去new一個新的視圖,可以大大地提高性能.當跳出一個視圖后,視圖的元素被保存在DOM中,它的作用域也就不在$watch的作用域內,當我們訪問一個已經被 ...

Java對象在JVM中的生命周期

當你通過new語句創建一個java對象時,JVM就會為這個對象分配一塊內存空間,只要這個對象被引用變量引用了,那么這個對象就會一直駐留在內存中,否則,它就會結束生命周期,JVM會在合適的時 ...

Netty中ChannelHandler的生命周期

在使用Netty進行網絡編程的時候,通常需要在網絡連接的不同階段進行相應的操作,比如在連接建立時,客戶端向服務端發起認證,在接收到數據時對數據內容進行解析等等.那么,連接的不同階段在netty中如何表 ...

隨機推薦

FZU 2090 旅行社的煩惱 floyd 求無向圖最小環

題目鏈接:旅行社的煩惱 題意是求無向圖的最小環,如果有的話,輸出個數,并且輸出權值. 剛剛補了一發floyd 動態規劃原理,用了滑動數組的思想.所以,這個題就是floyd思想的變形.在k從1到n的過程 ...

Android ScrollView 不能滾動但是有滾動條

如果一切都檢查完畢,沒有任何設置為不能滾動,而且outouch事件也沒有被攔截的話,那么在布局文件中檢查下是否在ScrollView中的子View中設置了margin_top屬性.如果設置了,那么Sc ...

maven中pom.xml

1. GroupID是項目組織唯一的標識符,實際對應JAVA的包的結構,是main目錄里java的目錄結構. ArtifactID就是項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱.一般 ...

C#注冊表

C#注冊表情緣 ? 記得當時剛接觸C#的時候,喜歡編寫各種小軟件,而注冊表系列和網絡系列被當時的我認為大牛的必備技能.直到我研究注冊表前一天我都感覺他是那么的高深. 今天正好有空,于是就研究了下注冊表 ...

數細胞-swust oj

數細胞(0964) 一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數.編程需要用到的隊列及其相關函數已經實現,你只需要完 ...

Spring 源碼學習(4)—— bean的加載part 1

前面隨筆中,結束了對配置文件的解析工作,以及將配置文件轉換成對應的BeanDefinition存儲在容器中.接下來就該進行bean的加載了. public Object getBean(String ...

SharpGL學習筆記(十) 常見的光源類型,創建光源

在OpenGL中,使用光源的特性組合,如顏色,位置,方向等等,可以創建多種不同類型的燈光. 常見的幾種燈光類型有: 定向光源(directonal) 定位光源(positional) 衰減光源 聚光燈 ...

ssh 上傳文件以及文件夾到linux服務器

閑來無事分享一篇,幫助到你的話,麻煩給老弟點個關注.經常會分享一些實用技能. 回歸正題,現在服務器linux很多.是不是不會傳文件?別急 下面就是方法: 一.上傳文件到linux服務器 首先從你本地切 ...

在windows上搭建redis集群(redis-cluster)(轉載)

一 所需軟件:Redis.Ruby語言運行環境.Redis的Ruby驅動redis-xxxx.gem.創建Redis集群的工具redis-trib.rb 二 安裝配置redis? redis下載地址 ...

總結

以上是生活随笔為你收集整理的服务器session文件什么时候销毁,node中session存储与销毁,及session的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。