Merge branch 'dev'
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
## [210.1.0] - 2026-01-27
|
## [210.1.2] - 2026-01-27
|
||||||
|
### Fixed
|
||||||
|
- 修复刷新token失效无限重定向
|
||||||
|
|
||||||
|
## [210.1.1] - 2026-01-27
|
||||||
### Fixed
|
### Fixed
|
||||||
- 修复token过期重定向无法续期的问题
|
- 修复token过期重定向无法续期的问题
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
210.1.1
|
210.1.2
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,16 @@ export interface ChangelogEntry {
|
|||||||
|
|
||||||
export const changelog: ChangelogEntry[] = [
|
export const changelog: ChangelogEntry[] = [
|
||||||
{
|
{
|
||||||
|
version: '210.1.2',
|
||||||
|
date: '2026-01-27',
|
||||||
|
added: [
|
||||||
|
],
|
||||||
|
changed: [
|
||||||
|
],
|
||||||
|
fixed: [
|
||||||
|
"修复刷新token失效无限重定向"
|
||||||
|
]
|
||||||
|
},{
|
||||||
version: '210.1.1',
|
version: '210.1.1',
|
||||||
date: '2026-01-27',
|
date: '2026-01-27',
|
||||||
added: [
|
added: [
|
||||||
|
|||||||
+25
-12
@@ -527,6 +527,16 @@ async function fetchWithAuth(
|
|||||||
if (res.status === 401) {
|
if (res.status === 401) {
|
||||||
const text = await res.clone().text();
|
const text = await res.clone().text();
|
||||||
if (text === 'Access token expired') {
|
if (text === 'Access token expired') {
|
||||||
|
// 检查是否是登录相关的接口,如果是则不刷新
|
||||||
|
if (
|
||||||
|
url.includes('/api/login') ||
|
||||||
|
url.includes('/api/register') ||
|
||||||
|
url.includes('/api/auth/oidc') ||
|
||||||
|
url.includes('/api/auth/refresh')
|
||||||
|
) {
|
||||||
|
throw new Error('用户未授权');
|
||||||
|
}
|
||||||
|
|
||||||
// 尝试刷新 token
|
// 尝试刷新 token
|
||||||
const refreshRes = await fetch('/api/auth/refresh', {
|
const refreshRes = await fetch('/api/auth/refresh', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -541,19 +551,22 @@ async function fetchWithAuth(
|
|||||||
|
|
||||||
// 如果刷新后仍然是 401,或者是其他 401 错误,跳转登录
|
// 如果刷新后仍然是 401,或者是其他 401 错误,跳转登录
|
||||||
if (res.status === 401) {
|
if (res.status === 401) {
|
||||||
// 调用 logout 接口
|
// 检查当前页面是否已经是登录页,避免重复跳转
|
||||||
try {
|
if (typeof window !== 'undefined' && !window.location.pathname.startsWith('/login')) {
|
||||||
await fetch('/api/logout', {
|
// 调用 logout 接口
|
||||||
method: 'POST',
|
try {
|
||||||
headers: { 'Content-Type': 'application/json' },
|
await fetch('/api/logout', {
|
||||||
});
|
method: 'POST',
|
||||||
} catch (error) {
|
headers: { 'Content-Type': 'application/json' },
|
||||||
console.error('注销请求失败:', error);
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('注销请求失败:', error);
|
||||||
|
}
|
||||||
|
const currentUrl = window.location.pathname + window.location.search;
|
||||||
|
const loginUrl = new URL('/login', window.location.origin);
|
||||||
|
loginUrl.searchParams.set('redirect', currentUrl);
|
||||||
|
window.location.href = loginUrl.toString();
|
||||||
}
|
}
|
||||||
const currentUrl = window.location.pathname + window.location.search;
|
|
||||||
const loginUrl = new URL('/login', window.location.origin);
|
|
||||||
loginUrl.searchParams.set('redirect', currentUrl);
|
|
||||||
window.location.href = loginUrl.toString();
|
|
||||||
throw new Error('用户未授权,已跳转到登录页面');
|
throw new Error('用户未授权,已跳转到登录页面');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
const CURRENT_VERSION = '210.1.1';
|
const CURRENT_VERSION = '210.1.2';
|
||||||
|
|
||||||
// 导出当前版本号供其他地方使用
|
// 导出当前版本号供其他地方使用
|
||||||
export { CURRENT_VERSION };
|
export { CURRENT_VERSION };
|
||||||
|
|||||||
Reference in New Issue
Block a user