这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.7 KiB

import type { OAuthTokenResult, PasswordTokenRequestModel, RefreshTokenRequestModel, TokenResult } from "#/account";
import requestClient from "../request";
/**
* 用户登录
* @param request 参数
* @returns 用户token
*/
export async function loginApi(request: PasswordTokenRequestModel): Promise<TokenResult> {
const clientId = import.meta.env.VITE_GLOB_CLIENT_ID;
const clientSecret = import.meta.env.VITE_GLOB_CLIENT_SECRET;
const scope = import.meta.env.VITE_GLOB_SCOPE;
const result = await requestClient.post<OAuthTokenResult>(
"/connect/token",
{
client_id: clientId,
client_secret: clientSecret,
grant_type: "password",
password: request.password,
scope: scope,
username: request.username,
},
{
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
timeout: 30_000,
},
);
return {
accessToken: result.access_token,
expiresIn: result.expires_in,
refreshToken: result.refresh_token,
tokenType: result.token_type,
};
}
export async function refreshToken(request: RefreshTokenRequestModel): Promise<TokenResult> {
const clientId = import.meta.env.VITE_GLOB_CLIENT_ID;
const clientSecret = import.meta.env.VITE_GLOB_CLIENT_SECRET;
const scope = import.meta.env.VITE_GLOB_SCOPE;
const result = await requestClient.post<OAuthTokenResult>(
"/connect/token",
{
client_id: clientId,
client_secret: clientSecret,
grant_type: "refresh_token",
refresh_token: request.refreshToken,
scope: scope,
},
{
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
},
);
return {
accessToken: result.access_token,
expiresIn: result.expires_in,
refreshToken: result.refresh_token,
tokenType: result.token_type,
};
}