安裝
npm
install bcryptjs
使用
const bcrypt =
require
('bcryptjs'
)// 再註冊使用者的處理函式中,確認使用者名稱可用後,呼叫bcrypt.hashsync(明文密碼,隨機鹽長度)方法,對使用者的密碼進行加密處理
// 對使用者的密碼,進行bcryptjs加密,返回值是加密之後的字串
userinfo.password = bcrypt.
hashsync
(userinfo.password,
10)
npm
install @hapi/joi
npm
install @escook/express-joi
const joi =
require
('@hapi/joi'
)/**
* string() 值必須是字串
* alphanum() 值只能是包含 a-za-z0-9 的字串
* min(length) 最小長度
* max(length) 最大長度
* required() 值是必填項,不能為 undefined
* pattern(正規表示式) 值必須符合正規表示式的規則
*/// 使用者名稱驗證規則
const username = joi.
string()
.alphanum()
.min(1
).max(10)
.required()
const password = joi.
string()
.pattern
(/^[\s]$/).
required()
// 定義 標題、分類id、內容、發布狀態 的驗證規則
const title = joi.
string()
.required()
const cate_id = joi.
number()
.integer()
.min(1
).required()
const content = joi.
string()
.required()
.allow(''
)const state = joi.
string()
.valid
('已發布'
,'草稿').
required()
// 匯出註冊和登入表單驗證規則物件
exports.reg_login_schema =}--
----
----
----
----
----
----
-------
// 在路由檔案中匯入驗證規則
const expressjoi =
require
('@escook/express-joi'
)const
=require
('../schema/user'
)router.
post
('/reguser'
,exoressjoi
(reg_login_schema)
, userhandler.reguser)
const joi =
require
('@hapi/joi'
)use
(function
(err, req, res, next)
)
const compareresult = bcrypt.
comparesync
(userinfo.password, results[0]
.password)
// 如果對比的結果等於false,則證明使用者輸入的密碼錯誤if(
!compareresult)
const user =
npm
install jsonwebtoken
const jwt =
require
('jsonwebtoken'
)
module.exports =
const config =
require
('../config'
)const tokenstr = jwt.
sign
(user, config.jwtsecretkey,
)
res.
send
()
npm
install express-jwt
const config =
require
('../config'
)// 解析 token 中介軟體
const expressjwt =
require
('express-jwt'
)// 使用.unless()指定哪些介面不需要進行token認證
use(
expressjwt()
).unless()
// 在錯誤級別中介軟體中,捕獲並處理token認證失敗後的錯誤
use(
function
(err, req, res, next)
)
注意:使用express.urlencoded()中介軟體無法解析multipart/form-data格式的請求資料
npm
install multer
const multer =
require
('multer'
)const path =
require
('path'
)const upload =
multer
()
// 發布新文章的路由
// upload.single()是乙個區域性生效的中介軟體,用來解析formdata格式的表單資料
// 將檔案型別的資料,解析並掛在到req.file屬性中
// 將文字型別的胡資料,解析並掛在到req.body屬性中
router.
post
('/add'
, upload.
single
('cover_img'
), article_handler.addarticle)
----
--exports.
addarticle
=(req, res)
=>
// 發布新文章的處理函式
exports.
addarticle
=(req, res)
=>
)
第三方模組
參考 第三方模組 requestsimport requests 對於帶引數的url,傳入乙個dict作為params引數 params 要傳入http header時,我們傳入乙個dict作為headers引數 請求中傳入cookie,只需準備乙個dict傳入cookies引數 my cookie...
第三方模組 config
環境,就是指專案執行時所在的地方 當我們在自己電腦上執行專案時,此時專案所處的環境就是開發環境 當乙個專案被開發完成後,需要被放到 伺服器的電腦中執行,這時候專案所處的環境就是生產環境 因為在不同的環境中,專案的配置是不一樣的,舉個例子來說就是在開發環境時當你使用一些第三方的模組來有助於你開發 比如...
第三方模組安裝
第三方模組的安裝 python 之所以如此受程式設計師的喜愛,可能和它擁有大量的第三方模組相關,如計算機視覺領城的opencv 機器學習領城的tensorflow等。我們如果需要用到某些功能,可以首先去看網上是否已經有了實現該功能的模組,如果有這樣的模組,那麼直接import就行了,而不必自己花費時...