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.
 
 
 
 

27 lines
861 B

import { authService } from "../service/auth";
export default defineEventHandler(async (event) => {
const refreshToken = getCookie(event, "refresh_token");
if (!refreshToken) {
setResponseStatus(event, 401);
return { error: { code: "TOKEN_EXPIRED", message: "未登录" } };
}
try {
const { accessToken, newRefreshToken } = await authService.refreshToken(refreshToken);
setCookie(event, "refresh_token", newRefreshToken, {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: "strict",
maxAge: 7 * 24 * 60 * 60,
path: "/",
});
return { accessToken };
} catch (err: unknown) {
const e = err as { code?: string; message?: string };
setResponseStatus(event, 401);
return { error: { code: e.code ?? "TOKEN_EXPIRED", message: e.message ?? "Token 无效" } };
}
});