Browse Source

feat(api): 添加服务端认证和国际化支持

- 引入 createServerTokenAuthentication 用于服务端认证
- 在请求头中添加 Accept-Language 以支持国际化
-优化 client 实例创建方式,使用解构赋值
alova
Jin Mao 6 months ago
parent
commit
63ccda1bbc
  1. 18
      playground/src/api/request.ts

18
playground/src/api/request.ts

@ -4,7 +4,11 @@
import type { AxiosResponseHeaders, RequestClientOptions } from '@vben/request';
import { useAppConfig } from '@vben/hooks';
import { AlovaClient } from '@vben/plugins/alova';
import {
AlovaClient,
createServerTokenAuthentication,
VueHook,
} from '@vben/plugins/alova';
import { preferences } from '@vben/preferences';
import {
authenticateResponseInterceptor,
@ -130,9 +134,9 @@ export interface PageFetchParams {
}
let count = 0;
export const client = new AlovaClient(
{ baseURL: apiURL },
{
const { onAuthRequired, onResponseRefreshToken } =
createServerTokenAuthentication<typeof VueHook>({
async login(response, method) {
// localStorage.setItem('token', response.token);
// localStorage.setItem('refresh_token', response.refresh_token);
@ -140,6 +144,7 @@ export const client = new AlovaClient(
assignToken: (method) => {
const accessStore = useAccessStore();
const accessToken = accessStore.accessToken;
method.config.headers['Accept-Language'] = preferences.app.locale;
method.config.headers.Authorization = accessToken
? `Bearer ${accessToken}`
: null;
@ -169,7 +174,10 @@ export const client = new AlovaClient(
}
},
},
},
});
export const client = new AlovaClient(
{ baseURL: apiURL },
{ onAuthRequired, onResponseRefreshToken },
);
client.addResponseSuccessInterceptor(async (json) => {

Loading…
Cancel
Save