Express + jsonwebtoken を試す
環境を作る
必要なモジュールをインストールする
yarn add express jsonwebtoken
yarn add -D nodemon
nodemon はコードの変更を検知して自動でnodeを再起動するために必要
Expressの設定をする
サーバーを起動するコードを書く
const express = require("express")
const app = express()
const server = app.listen(3333, () => {
console.log("Node.js is listening to PORT:" + server.address().port)
})
Express を起動する。
nodemon app.js
トークンに対する処理を実装する
token.js というファイル(名前はなんでも良い)を作り、そこにjwtに対する処理を書く。
const jwt = require('jsonwebtoken')
const secretKey = 'kkofjow78310ifjl'
const getToken = req => {
if (
req.headers.authorization &&
req.headers.authorization.split(' ')[0] === 'Bearer' ) {
return req.headers.authorization.split(' ')[1]
}
return null
}
const createToken = user => {
return jwt.sign(user, secretKey, { expiresIn: '30s' })
}
const verifyToken = req => {
const result = {}
const token = getToken(req)
jwt.verify(token, secretKey, (err, decoded) => {
result.user = decoded
result.err = err
})
return result
}
module.exports = {
createToken,
verifyToken
}
secretKey は、トークン化する際の鍵
createToken は、jwt を作成する処理。
verifyToken は、jwt の検証処理。
api 側の実装
サインイン用のapi
app.get('/api/sign', (req, res) => {
const user = {
id: 100,
name: 'user1'
}
const token = tokenHelper.createToken(user)
res.json({
token
})
})
jwt を検証する api
app.post('/api/post', (req, res, next) => {
const auth = tokenHelper.verifyToken(req)
if(auth.err !== null) {
res.json({
err: auth.err
})
} else {
res.json({
result: 'post ok',
user: auth.user
})
}
})
ディスカッション
コメント一覧
まだ、コメントがありません