<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • <>JWT基礎鑒權

    Web安全是Web應用中非常重要的一環,主要由后端和服務器承擔安全保障
    面對請求源,后端有著各種各樣的鑒權機制: session,cookie,token,jwt,OAuth,OAuth2,api-key,signature…
    本節以jwt為例,演示一個極簡的token鑒權

    <>準備工作

    * 拷貝第一節HelloWorld項目
    * 安裝一種jwt依賴(本節使用jsonwebtoken)
    <>實踐

    接下來我們使用jsonwebtoken來實現最常見的登錄鑒權,登錄成功后返回一個token,之后憑借這個token去訪問另外的路由

    * 首先引入jwt依賴 const jwt = require('jsonwebtoken').default;
    * 定義一個密鑰
    之后我們會利用這個密鑰生成token,和檢驗token
    const secret = 'mysecretkey';
    * 寫個登錄時生成token的函數
    傳入用戶名和密碼,檢驗密碼,正確就生成一個token
    生成token: jwt.sign(標志,密鑰,選項(生命周期等))
    function getToken(user) { let token = null; const payload = { uname: user.uname
    , }; if (user.uname == 'root' && user.passwd == 'root') { token = jwt.sign(
    payload, secret, { expiresIn: '1h' }); } return token; }
    * 寫一個訪問時檢驗token的函數

    傳入req,res,next,從請求頭中取出名字為’token’的一個token,若請求頭里不帶token則返回請求報告沒token,token校驗通過了則放行
    function checkToken(req, res, next) { const token = req.headers['token']; if (!
    token) return res.status(401).json({ message: 'No token provided.' }); jwt.
    verify(token, secret, (err, decoded) => { if (err) return res.status(500).json({
    message: 'Failed to authenticate token.' }); req.userId = decoded.id; next(); })
    ; }
    * 編寫登錄接口 app.post('/login', (req, res) => { let user = req.body; let token =
    getToken(user); if(token!=null) { res.send(token); } else { res.status(401).send
    ("wrong"); } });
    * 編寫一個需要校驗token的接口
    將token檢驗函數作為中間件掛載到 /root 路由上
    app.get('/root', checkToken, (req, res) => { res.send('hello root user!'); });
    <>接口測試

    嘗試用api調試工具先訪問 login 接口,利用正確的用戶名和密碼獲取token,然后用得到的token去訪問 root 接口

    <>下一節-全局錯誤處理

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频