ใน Vue.js, การจัดการกับการตอบกลับ HTTP รหัส 401 (Unauthorized) คือการจัดการเมื่อผู้ใช้ไม่ได้รับอนุญาตให้เข้าถึงทรัพยากรหรือสิทธิ์การใช้งานหมดอายุ นี่คือวิธีการจัดการกับ HTTP 401 ใน Vue.js:
การใช้งาน Axios หรือ HTTP Library:
ในโปรเจกต์ Vue.js ของคุณ, คุณจะใช้ Axios หรือหนังสือรับอาหาร HTTP อื่น ๆ เพื่อทำการ HTTP requests ไปยังเซิร์ฟเวอร์. ในส่วนของการตรวจสอบการตอบกลับ HTTP 401, คุณสามารถใช้
axios.interceptors
เพื่อจัดการกับข้อผิดพลาดที่เกิดขึ้น.ตัวอย่างการตรวจสอบ HTTP 401 และจัดการกับมัน:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import axios from 'axios';
// ตั้งค่า interceptor สำหรับตรวจสอบ HTTP 401
axios.interceptors.response.use(
(response) => {
// ตรวจสอบสถานะการตอบกลับ
return response;
},
(error) => {
// จัดการกับข้อผิดพลาด HTTP 401
if (error.response && error.response.status === 401) {
// กระทำตามที่คุณต้องการ เช่น ให้ผู้ใช้เข้าสู่ระบบใหม่
// หรือทำการ refresh token แล้วลอง request อีกครั้ง
}
return Promise.reject(error);
}
);
// ตอนนี้คุณสามารถใช้ Axios ในที่อื่นในโปรเจกต์ Vue.js ของคุณการแสดงข้อผิดพลาดให้ผู้ใช้:
เมื่อคุณตรวจสอบการตอบกลับ HTTP 401 แล้วคุณสามารถแสดงข้อความหรือข้อผิดพลาดให้กับผู้ใช้ เช่น แสดงการแจ้งเตือนหรือแสดงหน้าเข้าสู่ระบบใหม่ หรือทำการ refresh token แล้วลอง request อีกครั้ง.
ตัวอย่างการแสดงข้อผิดพลาดใน Vue component:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40<template>
<div>
<h1>My App</h1>
<div v-if="error">
<p>{{ error }}</p>
</div>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
error: null,
};
},
methods: {
fetchData() {
axios.get('/api/data')
.then((response) => {
// ดำเนินการตามปกติ
})
.catch((error) => {
if (error.response && error.response.status === 401) {
// แสดงข้อความหรือทำการจัดการข้อผิดพลาด HTTP 401
this.error = 'คุณไม่ได้รับอนุญาตให้เข้าถึงข้อมูลนี้';
} else {
// จัดการกับข้อผิดพลาดอื่น ๆ ตามที่คุณต้องการ
this.error = 'เกิดข้อผิดพลาดในการดึงข้อมูล';
}
});
},
},
mounted() {
this.fetchData();
},
};
</script>การทำ Refresh Token:
หากคุณใช้ระบบการรับรองสิทธิ์แบบ Token และได้รับ HTTP 401 เนื่องจาก Token หมดอายุ, คุณสามารถทำ Refresh Token และลอง request ใหม่. นี่คือตัวอย่างการ Refresh Token:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28import axios from 'axios';
function refreshToken() {
return axios.post('/api/refresh-token')
.then((response) => {
// นำ Token ใหม่ที่ได้รับมาใช้งาน
const newToken = response.data.token;
axios.defaults.headers.common['Authorization'] = `Bearer ${newToken}`;
// ทำ request อีกครั้ง
return axios.request(error.config);
});
}
axios.interceptors.response.use(
(response) => {
return response;
},
(error) => {
if (error.response && error.response.status === 401) {
// ทำ Refresh Token และลอง request อีกครั้ง
return refreshToken()
.catch((refreshError) => {
return Promise.reject(refreshError);
});
}
return Promise.reject(error);
}
);นี่คือวิธีการจัดการกับ HTTP 401 ใน Vue.js โดยใช้ Axios และแสดงข้อความผิดพลาดหรือทำการ Refresh Token ตามสถานการณ์ของแอ
ปพลิเคชันของคุณ. การจัดการ HTTP 401 จะช่วยให้คุณรักษาความปลอดภัยและประสิทธิภาพของแอปพลิเคชันของคุณ.