安裝 jsonwebtoken
npm i -s jsonwebtoken
使用
const jwt = require('jsonwebtoken')
const = require('../utils/constant')
login(username, password).then(user => else ,
private_key,
)new result(, '登入成功').success(res)
}})
這裡需要定義 jwt 的私鑰和過期時間,過期時間不宜過短,也不宜過長,課程裡設定為 1 小時,實際業務中可根據場景來判斷,通常建議不超過 24 小時,保密性要求高的業務可以設定為 1-2 小時:
module.exports =
前端再次請求,結果如下:
}
可以看到 username 被正確解析,說明 token 生成成功
修改src/utils/request.js
:
service.interceptors.response.use(
response => )
// 判斷 token 失效的場景
if (res.code === -2) ).then(() => )})}
return promise.reject(new error(res.msg || '請求失敗'))
} else
},error => = error.response
message = data.msg
}message()
return promise.reject(error)
})
安裝 express-jwt
npm i -s express-jwt
建立/router/jwt.js
const expressjwt = require('express-jwt');
const = require('../utils/constant');
const jwtauth = expressjwt().unless();
module.exports = jwtauth;
在/router/index.js
中使用中介軟體
const jwtauth = require('./jwt')
// 註冊路由
const router = express.router()
// 對所有路由進行 jwt 認證
router.use(jwtauth)
在/utils/contants.js
中新增:
module.exports =
修改/model/result.js
:
expired(res)
修改自定義異常:
router.use((err, req, res, next) => ).expired(res.status(err.status))
} else ).fail(res.status(statuscode))
}})
後端新增路由的 jwt 認證後,再次請求/user/info
將丟擲 401 錯誤,這是由於前端未傳遞合理的 token 導致,下面我們就修改/utils/request.js
,使得前端請求時可以傳遞 token:
service.interceptors.request.use(
config => `
}return config
},error =>
)
前端去掉/user/info
請求時傳入的 token,因為我們已經從 token 中傳入,修改src/api/user.js
:
export function getinfo() )
}
在/db/index.js
中新增:
function queryone(sql) else
}).catch(error => )
})}
在/services/user.js
中新增:
function finduser(username) '`
return queryone(sql)
}
此時有個問題,前端僅在 http header 中傳入了 token,如果通過 token 獲取 username 呢?這裡就需要通過對 jwt token 進行解析了,在/utils/index.js
中新增 decode 方法:
const jwt = require('jsonwebtoken')
const = require('./constant')
function decode(req) else
return jwt.verify(token, private_key)
}
修改/router/user.js
:
router.get('/info', function(req, res) else
})} else
})
此時在前端重新登入,登入終於成功了!
修改src/store/modules/user.js
:
logout() )
resolve()
} catch (e)
})}
iOS 分享功能開發
如下圖 我們今天要講到的方式是使用了乙個第三方工具 一,註冊賬號 去官網註冊 二,sdk整合 新增依賴庫檔案 必須新增的依賴庫 根據社交平台需要新增的依賴庫 到此為止sdk整合就算完成 下來我們開始 部分 三,初始sharesdk和社交平台 1 設定根檢視控制器 必須設定rootviewcontro...
發票功能開發小結
1 li前面的點消除 list style none li不需要選不同的class名稱。只需要乙個class。可以使用 nth child n doctype html html head style p nth child odd p nth child even style head body ...
android 功能開發筆記
1,重力感應 感應器程式設計 a.獲取系統服務 sensor service 返回乙個sensormanager 物件 sensormanager sensormanager getsystemseriver sensor service b.通過sensormanager物件獲取相應的sensor...