Adonis.js เวอร์ชัน 4.x
ปัญหาคือฉันไม่สามารถเพิ่มส่วนหัวการอนุญาตในฝั่งไคลเอ็นต์เพื่อใช้มิดเดิลแวร์ Adonis/Middleware/Auth
เพื่อตรวจสอบสิทธิ์โทเค็น JWT ของฉัน
สิ่งที่ฉันทำคือสร้างมิดเดิลแวร์สำหรับลูกค้าเพื่ออนุญาตการเชื่อมต่อซ็อกเก็ต ตอนนี้ฉันสามารถรับโทเค็นที่ส่งผ่านได้แล้ว แล้วตอนนี้ฉันจะตรวจสอบได้อย่างไรว่าโทเค็นนั้นถูกต้อง? ฉันไม่เห็นเอกสารที่ดีใด ๆ ในส่วนนี้ ขอขอบคุณขั้นสูงสำหรับความช่วยเหลือ!
ฝั่งไคลเอ็นต์
import Ws from '@adonisjs/websocket-client'
const ws = Ws('ws://0.0.0.0:3001', {
path: 'adonis-ws'
})
const jwtToken = cookie.get('auth._token.local')
ws
.withJwtToken(jwtToken)
.connect()
ฝั่งเซิร์ฟเวอร์
// start/socket.js
const Ws = use('Ws')
Ws.channel('order', 'OrderController').middleware(['socketAuth'])
// start/wsKernel.js
const Ws = use('Ws')
const namedMiddleware = {
socketAuth: 'App/Middleware/SocketAuthentication'
}
Ws
.registerGlobal(globalMiddleware)
.registerNamed(namedMiddleware)
// app/Middleware/SocketAuthentication.js
class SocketAuthentication {
async wsHandle ({ request, auth }, next) {
try {
const { token } = request.all()
// Authenticate the error in this part :(
await next()
} catch (error) {
console.log(error)
}
}
}
module.exports = SocketAuthentication