中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站的點(diǎn)子站長之家ppt素材

做網(wǎng)站的點(diǎn)子,站長之家ppt素材,生成圖標(biāo)網(wǎng)站,積分動力WordPress一、會話控制 1.介紹 所謂會話控制就是 對會話進(jìn)行控制 HTTP 是一種無狀態(tài)的協(xié)議,它沒有辦法區(qū)分多次的請求是否來自于同一個客戶端, 無法區(qū)分用戶 而產(chǎn)品中又大量存在的這樣的需求,所以我們需要通過 會話控制 來解決該問題 常見的會話控制…

一、會話控制

1.介紹

所謂會話控制就是 對會話進(jìn)行控制
HTTP 是一種無狀態(tài)的協(xié)議,它沒有辦法區(qū)分多次的請求是否來自于同一個客戶端, 無法區(qū)分用戶
而產(chǎn)品中又大量存在的這樣的需求,所以我們需要通過 會話控制 來解決該問題
常見的會話控制技術(shù)有三種:

  • cookie
  • session
  • token

2. cookie

1 cookie 是什么

cookieHTTP 服務(wù)器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù)
cookie 是保存在瀏覽器端的一小塊數(shù)據(jù)
cookie 是按照域名劃分保存的
簡單示例:

域名cookie
www.baidu.coma=100;b=200
www.bilibili.comxid=1020abce121; hm=112411213
jd.comx=100; ocw=12414cce

2. cookie 的特點(diǎn)

瀏覽器向服務(wù)器發(fā)送請求時,會自動將 當(dāng)前域名下 可用的 cookie 設(shè)置在請求頭中,然后傳遞給服務(wù)器,這個請求頭的名字也叫 cookie ,所以將 cookie 理解為一個 HTTP 的請求頭也是可以的

3. cookie 的運(yùn)行流程

填寫賬號和密碼校驗(yàn)身份,校驗(yàn)通過后下發(fā) cookie
在這里插入圖片描述

有了 cookie 之后,后續(xù)向服務(wù)器發(fā)送請求時,就會自動攜帶 cookie
在這里插入圖片描述

4. cookie 的代碼操作

express 中可以使用 cookie-parser 進(jìn)行處理

const express =require('express');
//1. 安裝 cookie-parser npm i cookie-parser
//2. 引入 cookieParser 包
const cookieParser = require('cookie-parser');
const app = express();
//3. 設(shè)置 cookieParser 中間件
app.use(cookieParser());
//4-1 設(shè)置 cookie
app.get('/set-cookie', (request, response) => {// 不帶時效性response.cookie('username','wangwu');// 帶時效性response.cookie('email','23123456@qq.com', {maxAge: 5*60*1000 });//響應(yīng)response.send('Cookie的設(shè)置');
});
//4-2 讀取 cookie
app.get('/get-cookie', (request, response) => {//讀取 cookieconsole.log(request.cookies);//響應(yīng)體response.send('Cookie的讀取');
});
//4-3 刪除cookie
app.get('/delete-cookie', (request, response) => {//刪除response.clearCookie('username');//響應(yīng)response.send('cookie 的清除');
});
//4. 啟動服務(wù)
app.listen(3000, () => {console.log('服務(wù)已經(jīng)啟動....');
});

不同瀏覽器中的 cookie 是相互獨(dú)立的,不共享

3. session

1. session 是什么

session 是保存在 服務(wù)器端的一塊兒數(shù)據(jù) ,保存當(dāng)前訪問用戶的相關(guān)信息

2. session 的作用

實(shí)現(xiàn)會話控制,可以識別用戶的身份,快速獲取當(dāng)前用戶的相關(guān)信息

3. session 運(yùn)行流程

填寫賬號和密碼校驗(yàn)身份,校驗(yàn)通過后創(chuàng)建 session 信息 ,然后將 session_id 的值通過響應(yīng)頭返回
給瀏覽器
在這里插入圖片描述

有了 cookie,下次發(fā)送請求時會自動攜帶 cookie,服務(wù)器通過 cookie 中的 session_id 的值確定用戶的身份
在這里插入圖片描述

4. session 的代碼操作

express 中可以使用 express-sessionsession 進(jìn)行操作

const express = require('express');
//1. 安裝包 npm i express-session connect-mongo
//2. 引入 express-session connect-mongo
const session = require("express-session");
const MongoStore = require('connect-mongo');
const app = express();
//3. 設(shè)置 session 的中間件
app.use(session({name: 'sid', //設(shè)置cookie的name,默認(rèn)值是:connect.sidsecret: 'secret', //參與加密的字符串(又稱簽名)saveUninitialized: false, //是否為每次請求都設(shè)置一個cookie用來存儲session的idresave: true, //是否在每次請求時重新保存sessionstore: MongoStore.create({mongoUrl: 'mongodb://127.0.0.1:27017/project' //數(shù)據(jù)庫的連接配置}),cookie: {httpOnly: true, // 開啟后前端無法通過 JS 操作maxAge: 1000 * 300 // 這一條 是控制 sessionID 的過期時間的!!!},
}))
//創(chuàng)建 session
app.get('/login', (req, res) => {//設(shè)置sessionreq.session.username = 'zhangsan';req.session.email = 'zhangsan@qq.com'res.send('登錄成功');
})
//獲取 session
app.get('/home', (req, res) => {console.log('session的信息');console.log(req.session.username);if (req.session.username) {res.send(`你好 ${req.session.username}`);}else{res.send('登錄 注冊');}
})
//銷毀 session
app.get('/logout', (req, res) => {//銷毀session// res.send('設(shè)置session');req.session.destroy(() => {res.send('成功退出');});
});
app.listen(3000, () => {console.log('服務(wù)已經(jīng)啟動, 端口 ' + 3000 + ' 監(jiān)聽中...');
});

session示例

4. sessioncookie 的區(qū)別

cookiesession 的區(qū)別主要有如下幾點(diǎn):

  1. 存在的位置
    • cookie:瀏覽器端
    • session:服務(wù)端
  2. 安全性
    • cookie 是以明文的方式存放在客戶端的,安全性相對較低
    • session 存放于服務(wù)器中,所以安全性 相對 較好
  3. 網(wǎng)絡(luò)傳輸量
    • cookie 設(shè)置內(nèi)容過多會增大報(bào)文體積, 會影響傳輸效率
    • session 數(shù)據(jù)存儲在服務(wù)器,只是通過 cookie 傳遞 id,所以不影響傳輸效率
  4. 存儲限制
    • 瀏覽器限制單個 cookie 保存的數(shù)據(jù)不能超過 4K ,且單個域名下的存儲數(shù)量也有限制
    • session 數(shù)據(jù)存儲在服務(wù)器中,所以沒有這些限制

5. token

1. token 是什么

token 是服務(wù)端生成并返回給 HTTP 客戶端的一串加密字符串, token 中保存著 用戶信息

2. token 的作用

實(shí)現(xiàn)會話控制,可以識別用戶的身份,主要用于移動端 APP

3. token 的工作流程

填寫賬號和密碼校驗(yàn)身份,校驗(yàn)通過后響應(yīng) tokentoken 一般是在響應(yīng)體中返回給客戶端的
在這里插入圖片描述

后續(xù)發(fā)送請求時,需要手動將 token 添加在請求報(bào)文中,一般是放在請求頭中
在這里插入圖片描述

4. token 的特點(diǎn)

  • 服務(wù)端壓力更小
    • 數(shù)據(jù)存儲在客戶端
  • 相對更安全
    • 數(shù)據(jù)加密
    • 可以避免 CSRF(跨站請求偽造)
  • 擴(kuò)展性更強(qiáng)
    • 服務(wù)間可以共享
    • 增加服務(wù)節(jié)點(diǎn)更簡單

5. JWT

JWT(JSON Web Token )是目前最流行的跨域認(rèn)證解決方案,可用于基于 token 的身份驗(yàn)證
JWT 使 token 的生成與校驗(yàn)更規(guī)范
我們可以使用 jsonwebtoken 包 來操作 token

//導(dǎo)入 jsonwebtokan
const jwt = require('jsonwebtoken');
//創(chuàng)建 token
// jwt.sign(數(shù)據(jù), 加密字符串, 配置對象)
let token = jwt.sign({username: 'zhangsan'},'secret',{expiresIn: 60 //單位是 秒}
)
//解析 token
jwt.verify(token, 'secret', (err, data) => {if(err){console.log('校驗(yàn)失敗~~');return}console.log(data);
})

外部閱讀https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html

token示例

二、 附錄

1. 本地域名

所謂本地域名就是 只能在本機(jī)使用的域名 ,一般在開發(fā)階段使用

  1. 操作流程
    編輯文件 C:\Windows\System32\drivers\etc\hosts
127.0.0.1 www.baidu.com

如果修改失敗, 可以修改該文件的權(quán)限
在這里插入圖片描述

  1. 原理
    在地址欄輸入 域名 之后,瀏覽器會先進(jìn)行 DNS(Domain Name System) 查詢,獲取該域名對應(yīng)的 IP 地址
    請求會發(fā)送到 DNS 服務(wù)器,可以 根據(jù)域名返回 IP 地址
    可以通過 ipconfig /all 查看本機(jī)的 DNS 服務(wù)器
    hosts 文件也可以設(shè)置域名與 IP 的映射關(guān)系,在發(fā)送請求前,可以通過該文件獲取域名的 IP 地址

2. HTTPS(在服務(wù)器端完成)

https 本意示 http + SSL(Secure Sockets Layer 安全套接層)
https 可以 加密HTTP報(bào)文,所以大家也可以理解為是安全的HTTP
工具官網(wǎng):https://certbot.eff.org
操作流程:

  1. 下載工具:https://dl.eff.org/certbot-beta-installer-win_amd64.exe
  2. 安裝工具
  3. 管理員命令: certbot certonly --standalone
  4. 代碼配置如下:
const https = require('https')
https.createServer({key: fs.readFileSync('/etc/letsencrypt/path/to/privkey.pem'),cert: fs.readFileSync('/etc/letsencrypt/path/to/cert.pem'),ca: fs.readFileSync('/etc/letsencrypt/path/to/chain.pem'),}, app
)
.listen(443, ()=>{console.log('Listening...')
})
  1. 證書更新,證書有效期為三個月,可以通過下面的命令更新
## 一般更新
certbot renew
## 強(qiáng)制更新
certbot --force-renewal
http://www.risenshineclean.com/news/29132.html

相關(guān)文章:

  • 同程網(wǎng)站建設(shè)分析朝陽網(wǎng)站建設(shè)公司
  • 深圳住建委網(wǎng)站智謀網(wǎng)站優(yōu)化公司
  • html5門戶網(wǎng)站模板百度人工客服電話多少
  • 鄭州做網(wǎng)站九零后排名點(diǎn)擊工具
  • 網(wǎng)站開發(fā)程序員 工資百度云怎么找資源
  • 貴陽網(wǎng)站建設(shè)多少錢?影視后期培訓(xùn)機(jī)構(gòu)全國排名
  • 如何搭建公司網(wǎng)站上海公關(guān)公司
  • 做美圖 網(wǎng)站有哪些付費(fèi)惡意點(diǎn)擊軟件
  • 做局域網(wǎng)網(wǎng)站教程東莞網(wǎng)絡(luò)優(yōu)化調(diào)查公司
  • 慈溪企業(yè)排名網(wǎng)站培訓(xùn)機(jī)構(gòu)排名全國十大教育機(jī)構(gòu)排名
  • 做腳本網(wǎng)站建站公司最新報(bào)價
  • 網(wǎng)站海外推廣哪家好怎么在百度上發(fā)表文章
  • 怎樣做已有網(wǎng)站的編輯維護(hù)四川聚順成網(wǎng)絡(luò)科技有限公司
  • wordpress自建站哪里換logo騰訊企點(diǎn)客服
  • 印度做網(wǎng)站設(shè)計(jì)百度權(quán)重提升
  • 快速收錄網(wǎng)站微信公眾號運(yùn)營
  • 云谷 網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣的方法有
  • 精美化妝品網(wǎng)站模板推廣平臺排名前十名
  • 專業(yè)微網(wǎng)站建設(shè)公司首選公司哪家好網(wǎng)站排名軟件
  • 黨員寫試卷需要在哪個網(wǎng)站做輿情管理
  • 建網(wǎng)站學(xué)什么谷歌搜索引擎香港免費(fèi)入口
  • 注冊網(wǎng)站到公安機(jī)關(guān)備案由誰告知seo關(guān)鍵詞排名優(yōu)化要多少錢
  • 百度seo優(yōu)化技巧東莞seo推廣公司
  • 網(wǎng)站子站建設(shè)aso關(guān)鍵詞優(yōu)化計(jì)劃
  • 動態(tài)網(wǎng)站開發(fā)案例教程百度網(wǎng)盤登陸入口
  • 搭建獨(dú)立站專業(yè)軟文代寫
  • 網(wǎng)站推廣每天必做的流程中視頻自媒體賬號注冊下載
  • 后海做網(wǎng)站公司網(wǎng)站推廣的渠道有
  • 在國外怎么做網(wǎng)站服務(wù)營銷
  • 做時時彩網(wǎng)站被抓廣州新塘網(wǎng)站seo優(yōu)化