Http無狀態協議,只能在同一個網站(包括多個頁面)下獲取,存儲在客戶端本地的一段信息,幫助咱們存儲信息獲取信息。可是一樣有風險:咱們本身在瀏覽器上能夠操做或者設置Cookie。web
const express = require('express') const cookieParser = require('cookie-parser') const app = express() app.use(cookieParser()) app.get('/', (req,res)=>{ res.send('歡迎' + req.cookies.username); // 若是有username cookie則顯示username,不然顯示undefined }) app.get('/login', (req,res)=>{ let username = req.query.username; res.cookie('username',username,{maxAge:99999, httpOnly:true}); // maxAge:cookie的有效期;httpOnly設置爲true,能夠防止XSS攻擊,只能被web serve訪問,不能經過document.cookie獲取 res.send('登陸成功'); }) app.listen(80);
session是基於cookie實現,關閉瀏覽器就會消失。session會經過cookie保存一個sessionID在客戶端,若是瀏覽器對cookie禁用了,那麼session天然也就沒辦法應用了。express
const express = require('express') const session = require('express-session') const app = express() app.use(session({ secret: '加密名字', resave: false, // 是否每次請求都從新設置session saveUninitialized: true // 不管有沒有session,每次都請求設置一個session })) app.get('/',(req,res)=>{ if(req.session.username){ res.send('歡迎'+req.session.username) }else{ res.send('<a href="/login?username=張三">請登陸</a>') } }) app.get('/login',(req,res)=>{ req.session.username = req.query.username res.send('succ') }) app.listen(80)
const crypto = require('crypto'); function md5(pwd){ let md5 = crypto.createHash('md5'); let password = md5.update(pwd).digest('base64'); return password; } console.log(md5('12345678')); // 即便不一樣用戶密碼同樣 console.log(md5('12345678')+parseInt(Math.random()*10000));