请问登出这样写可以吗?
来源:10-12 开发路由
arden82
2020-09-08
//logout 放在routes/blog.js router.get("/logout", (req, res, next) => { //刪除session,同時在req.session中被移除,但是在下一次請求的時候又會被建立 req.session.destroy(); res.json(new SuccessModel()) }) --------------------------------------------------------------------- //html-test 登出 const $btnDel = $("#logout") $btnDel.click(function () { get("/api/blog/logout").then(res => { if (res.errno !== 0) { alert('登出失败') return } alert('登出成功') location.href = "/index.html" }) })
写回答
2回答
-
arden82
提问者
2020-09-09
使用req.session.destroy()
127.0.0.1:6379> keys * 1) "sess:wKZbEQ7o-DrbxyAkMaKMcA42Dr7nlD55" 127.0.0.1:6379> get sess:wKZbEQ7o-DrbxyAkMaKMcA42Dr7nlD55 "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2020-09-10T14:24:36.296Z\",\"httpOnly\":true,\"path\":\"/\"},\"username\":\"arden\",\"realname\":\"\xe7\x87\x81\xe7\x87\x81\"}" 127.0.0.1:6379> keys * //登出后 //存在redis裡面的原本key被刪掉了,又建立一個一個新的key 1) "sess:0t6krtPISdTZE5LIxsJD7pPIjuqmML-a" 127.0.0.1:6379> get sess:0t6krtPISdTZE5LIxsJD7pPIjuqmML-a "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2020-09-10T14:25:18.506Z\",\"httpOnly\":true,\"path\":\"/\"}}" 127.0.0.1:6379>
想问删除session数据?是使用res.clearCookie("connect.sid")吗?
127.0.0.1:6379> get sess:O36CjQ8QWwB9lP1eOyEIzUfjRzHdkL02 "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2020-09-10T14:34:12.410Z\",\"httpOnly\":true,\"path\":\"/\"}}" //登入后 127.0.0.1:6379> get sess:O36CjQ8QWwB9lP1eOyEIzUfjRzHdkL02 "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2020-09-10T14:35:52.981Z\",\"httpOnly\":true,\"path\":\"/\"},\"username\":\"arden\",\"realname\":\"\xe7\x87\x81\xe7\x87\x81\"}" //登出后,原本的key還在,又新增一個key 127.0.0.1:6379> keys * 1) "sess:NzPMO53A83lgXVHtN5BBmr4jeXXLefWK" 2) "sess:O36CjQ8QWwB9lP1eOyEIzUfjRzHdkL02" 127.0.0.1:6379> get sess:O36CjQ8QWwB9lP1eOyEIzUfjRzHdkL02 "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2020-09-10T14:35:52.981Z\",\"httpOnly\":true,\"path\":\"/\"},\"username\":\"arden\",\"realname\":\"\xe7\x87\x81\xe7\x87\x81\"}" 127.0.0.1:6379> get sess:NzPMO53A83lgXVHtN5BBmr4jeXXLefWK "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2020-09-10T14:36:22.391Z\",\"httpOnly\":true,\"path\":\"/\"}}" 127.0.0.1:6379>
虽然旧的key不会被删掉,但采用redis过期删除旧的key,请问是这样的做法吗?
查到资料上是写res.clearCookie()只会删除cookie,并且如果您能以某种方式还原cookie(如果有备份或有人偷了它),则将重新登录(或cookie的任何功能)。
使用req.session.destroy() ,则会话也会在服务器中无效,因此,即使您获得了cookie,也不会获得该会话。
00 -
双越
2020-09-09
只删除 session 数据即可。
至于 req.session ,不用管。因为你本次请求之后 req 会销毁,下次请求会创建新的 req ,所以不用管。
032020-09-10
相似问题