我的个人网站漫岛采用的是前后端分离,当用户进行敏感操作且其token过期时,需要后台接口返回特定的状态码401。然后前端使用axios的拦截器根据响应的状态码将用户导入到对应的页面。
后台返回特定状态码我使用的是http_response_code
方法,再配合exit
,即可返回状态码401并且给予一定的错误信息说明。
http_response_code(401);
exit(json_encode(error([], '登录过期,请重新登录'), JSON_UNESCAPED_UNICODE));
着重说明的是,如果不使用exit
的话,响应的状态码仍然是200
。
附上axios的相应拦截代码作为参考:
axios.interceptors.response.use(
response => {
return response;
},
error => {
if(error.response) {
switch(error.response.status) {
case 401:
alert("长时间未活动掉线了,请重新登录");
store.dispatch('setExit');
router.push('/welcome');
break;
case 404:
router.push('*');
break;
case 500:
router.push('/500');
break;
default:
router.push('/500');
}
}
return Promise.reject(error.response.data)
});