storge有1天過期
This commit is contained in:
1 parent
be496ab375
commit
74757f9eb4
1 file changed
+27
-7
@@ -23,17 +23,37 @@ export const useLoginProfileStore = defineStore("loginProfile", {
|
||||
actions: {
|
||||
updateLoginProfile(loginProfile: LoginProfile) {
|
||||
this.loginProfile = loginProfile;
|
||||
storage.set(JWT_STORAGE_ID, "Bearer " + loginProfile.Token.AccessToken);
|
||||
storage.set(JWT_REFRESHKEY_STORAGE_ID, loginProfile.Token.RefreshToken);
|
||||
storage.set(LOGIN_PROFILE_STORAGE_ID, JSON.stringify(this.loginProfile));
|
||||
// 令牌与用户档案用 expire:null 存储(不做过期)。
|
||||
// storage 默认只缓存 1 天:第二天再打开时 getToken()/getJwtInfo()
|
||||
// 会因过期直接返回 null 并删除条目,本地既没有 AccessToken 也没有
|
||||
// RefreshToken,401 拦截器无处续期、路由守卫直接跳登录页——
|
||||
// 而 RefreshToken 在后端有 60 天有效期,本可自动刷新续期。
|
||||
// 是否失效交给后端判定:刷新失败时 request.ts 会 clearStorage() 收尾。
|
||||
storage.set(
|
||||
JWT_STORAGE_ID,
|
||||
"Bearer " + loginProfile.Token.AccessToken,
|
||||
null,
|
||||
);
|
||||
storage.set(
|
||||
JWT_REFRESHKEY_STORAGE_ID,
|
||||
loginProfile.Token.RefreshToken,
|
||||
null,
|
||||
);
|
||||
storage.set(
|
||||
LOGIN_PROFILE_STORAGE_ID,
|
||||
JSON.stringify(this.loginProfile),
|
||||
null,
|
||||
);
|
||||
},
|
||||
updateToken(token: string) {
|
||||
this.loginProfile.Token.AccessToken = token;
|
||||
storage.set(JWT_STORAGE_ID, token);
|
||||
storage.set(JWT_STORAGE_ID, token, null);
|
||||
},
|
||||
updateJwtInfo(jwtInfo: JwtInfo) {
|
||||
storage.set(JWT_STORAGE_ID, "Bearer " + jwtInfo.AccessToken);
|
||||
storage.set(JWT_REFRESHKEY_STORAGE_ID, jwtInfo.RefreshToken);
|
||||
// 同 updateLoginProfile:刷新得到的新令牌同样不设本地过期时间,
|
||||
// 否则续期后的令牌过一天又会被本地缓存过期删除。
|
||||
storage.set(JWT_STORAGE_ID, "Bearer " + jwtInfo.AccessToken, null);
|
||||
storage.set(JWT_REFRESHKEY_STORAGE_ID, jwtInfo.RefreshToken, null);
|
||||
|
||||
// 只改令牌,用户信息与权限清单必须沿用缓存里的原值。
|
||||
// pinia 不做持久化(刷新页面后 state 会重置成 new LoginProfile()),
|
||||
@@ -52,7 +72,7 @@ export const useLoginProfileStore = defineStore("loginProfile", {
|
||||
profile.Token.AccessToken = jwtInfo.AccessToken;
|
||||
profile.Token.RefreshToken = jwtInfo.RefreshToken;
|
||||
profile.Token.CreatedTime = jwtInfo.CreatedTime;
|
||||
storage.set(LOGIN_PROFILE_STORAGE_ID, JSON.stringify(profile));
|
||||
storage.set(LOGIN_PROFILE_STORAGE_ID, JSON.stringify(profile), null);
|
||||
}
|
||||
|
||||
// 同步回内存:同页面后续读取(如 updateToken)才拿得到新令牌
|
||||
|
||||
Reference in new issue
Block a user