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: {
|
actions: {
|
||||||
updateLoginProfile(loginProfile: LoginProfile) {
|
updateLoginProfile(loginProfile: LoginProfile) {
|
||||||
this.loginProfile = loginProfile;
|
this.loginProfile = loginProfile;
|
||||||
storage.set(JWT_STORAGE_ID, "Bearer " + loginProfile.Token.AccessToken);
|
// 令牌与用户档案用 expire:null 存储(不做过期)。
|
||||||
storage.set(JWT_REFRESHKEY_STORAGE_ID, loginProfile.Token.RefreshToken);
|
// storage 默认只缓存 1 天:第二天再打开时 getToken()/getJwtInfo()
|
||||||
storage.set(LOGIN_PROFILE_STORAGE_ID, JSON.stringify(this.loginProfile));
|
// 会因过期直接返回 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) {
|
updateToken(token: string) {
|
||||||
this.loginProfile.Token.AccessToken = token;
|
this.loginProfile.Token.AccessToken = token;
|
||||||
storage.set(JWT_STORAGE_ID, token);
|
storage.set(JWT_STORAGE_ID, token, null);
|
||||||
},
|
},
|
||||||
updateJwtInfo(jwtInfo: JwtInfo) {
|
updateJwtInfo(jwtInfo: JwtInfo) {
|
||||||
storage.set(JWT_STORAGE_ID, "Bearer " + jwtInfo.AccessToken);
|
// 同 updateLoginProfile:刷新得到的新令牌同样不设本地过期时间,
|
||||||
storage.set(JWT_REFRESHKEY_STORAGE_ID, jwtInfo.RefreshToken);
|
// 否则续期后的令牌过一天又会被本地缓存过期删除。
|
||||||
|
storage.set(JWT_STORAGE_ID, "Bearer " + jwtInfo.AccessToken, null);
|
||||||
|
storage.set(JWT_REFRESHKEY_STORAGE_ID, jwtInfo.RefreshToken, null);
|
||||||
|
|
||||||
// 只改令牌,用户信息与权限清单必须沿用缓存里的原值。
|
// 只改令牌,用户信息与权限清单必须沿用缓存里的原值。
|
||||||
// pinia 不做持久化(刷新页面后 state 会重置成 new LoginProfile()),
|
// pinia 不做持久化(刷新页面后 state 会重置成 new LoginProfile()),
|
||||||
@@ -52,7 +72,7 @@ export const useLoginProfileStore = defineStore("loginProfile", {
|
|||||||
profile.Token.AccessToken = jwtInfo.AccessToken;
|
profile.Token.AccessToken = jwtInfo.AccessToken;
|
||||||
profile.Token.RefreshToken = jwtInfo.RefreshToken;
|
profile.Token.RefreshToken = jwtInfo.RefreshToken;
|
||||||
profile.Token.CreatedTime = jwtInfo.CreatedTime;
|
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)才拿得到新令牌
|
// 同步回内存:同页面后续读取(如 updateToken)才拿得到新令牌
|
||||||
|
|||||||
Reference in new issue
Block a user