Просмотр исходного кода

JWT,会话默认时间,JWT刷新自动刷新

shimingxy 21 часов назад
Родитель
Сommit
b034bdedc6

+ 1 - 0
maxkey-starter/maxkey-starter-web/src/main/java/org/dromara/maxkey/web/WebXssRequestFilter.java

@@ -72,6 +72,7 @@ public class WebXssRequestFilter  extends GenericFilterBean {
         skipParameterName.put("sharedSecret", "sharedSecret");
         skipParameterName.put("secret", "secret");
         skipParameterName.put("RelayState", "RelayState");
+        skipParameterName.put("refresh_token", "refresh_token");
     }
     
     @Override

+ 10 - 8
maxkey-web-frontend/maxkey-web-app/src/app/core/net/default.interceptor.ts

@@ -107,7 +107,8 @@ export class DefaultInterceptor implements HttpInterceptor {
    */
   private refreshTokenRequest(): Observable<any> {
     const model = this.tokenSrv.get();
-    return this.http.post(`/auth/token/refresh`, null, { refresh_token: model?.['refresh_token'] || '' });
+    ////return this.http.post(`/auth/token/refresh`, null, { refresh_token: model?.['refresh_token'] || '' });
+    return this.http.get(`/auth/token/refresh`, { refresh_token: model?.['refresh_token'] || '' });
   }
 
   // #region 刷新Token方式一:使用 401 重新刷新 Token
@@ -137,10 +138,11 @@ export class DefaultInterceptor implements HttpInterceptor {
         console.log(res.data);
         // 通知后续请求继续执行
         this.refreshToking = false;
-        this.refreshToken$.next(res.data.refresh_token);
-        this.cookieService.set(CONSTS.CONGRESS, res.data.token);
+        const jwtToken = res.data;
+        this.refreshToken$.next(jwtToken);
+        this.cookieService.set(CONSTS.CONGRESS, jwtToken.token, { path: '/' });
         // 重新保存新 token
-        this.tokenSrv.set(res.data);
+        this.tokenSrv.set(jwtToken);
         // 重新发起请求
         return next.handle(this.reAttachToken(req));
       }),
@@ -189,10 +191,10 @@ export class DefaultInterceptor implements HttpInterceptor {
       )
       .subscribe(
         res => {
-          // TODO: Mock expired value
-          res.expired = +new Date() + 1000 * 60 * 5;
-          this.refreshToking = false;
-          this.tokenSrv.set(res);
+          let jwtToken = res.data;
+          jwtToken.expired = jwtToken.expired * 1000;
+          this.cookieService.set(CONSTS.CONGRESS, jwtToken.token, { path: '/' });
+          this.tokenSrv.set(jwtToken);
         },
         () => this.toLogin()
       );

+ 1 - 1
maxkey-web-frontend/maxkey-web-app/src/app/global-config.module.ts

@@ -34,7 +34,7 @@ const alainConfig: AlainConfig = {
     license: `A59B099A586B3851E0F0D7FDBF37B603`,
     licenseA: `C94CEE276DB2187AE6B65D56B3FC2848`
   },
-  auth: { login_url: '/passport/login' }
+  auth: { login_url: '/passport/login', refreshTime: 60 * 1000 * 15 }
 };
 
 const alainModules: any[] = [AlainThemeModule.forRoot(), DelonACLModule.forRoot()];

+ 1 - 1
maxkey-web-frontend/maxkey-web-app/src/environments/environment.prod.ts

@@ -22,6 +22,6 @@ export const environment = {
   api: {
     baseUrl: '/sign/',
     refreshTokenEnabled: true,
-    refreshTokenType: 're-request'
+    refreshTokenType: 'auth-refresh'
   }
 } as Environment;

+ 1 - 1
maxkey-web-frontend/maxkey-web-app/src/environments/environment.ts

@@ -30,7 +30,7 @@ export const environment = {
     //baseUrl: 'http://sso.maxkey.top/sign/',
     baseUrl: 'http://localhost:9527/sign/',
     refreshTokenEnabled: true,
-    refreshTokenType: 're-request'
+    refreshTokenType: 'auth-refresh'
   },
   modules: [DelonMockModule.forRoot({ data: MOCKDATA })]
 } as Environment;

+ 10 - 12
maxkey-web-frontend/maxkey-web-mgt-app/src/app/core/net/default.interceptor.ts

@@ -29,7 +29,6 @@ import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';
 import { ALAIN_I18N_TOKEN, _HttpClient } from '@delon/theme';
 import { environment } from '@env/environment';
 import { NzNotificationService } from 'ng-zorro-antd/notification';
-import { CookieService } from 'ngx-cookie-service';
 import { BehaviorSubject, Observable, of, throwError } from 'rxjs';
 import { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators';
 
@@ -74,10 +73,6 @@ export class DefaultInterceptor implements HttpInterceptor {
     return this.injector.get(NzNotificationService);
   }
 
-  private get cookieService(): CookieService {
-    return this.injector.get(CookieService);
-  }
-
   private get tokenSrv(): ITokenService {
     return this.injector.get(DA_SERVICE_TOKEN);
   }
@@ -107,7 +102,8 @@ export class DefaultInterceptor implements HttpInterceptor {
    */
   private refreshTokenRequest(): Observable<any> {
     const model = this.tokenSrv.get();
-    return this.http.post(`/auth/token/refresh`, null, { refresh_token: model?.['refresh_token'] || '' });
+    //return this.http.post(`/auth/token/refresh`, null, { refresh_token: model?.['refresh_token'] || '' });
+    return this.http.get(`/auth/token/refresh`, { refresh_token: model?.['refresh_token'] || '' });
   }
 
   // #region 刷新Token方式一:使用 401 重新刷新 Token
@@ -134,13 +130,13 @@ export class DefaultInterceptor implements HttpInterceptor {
 
     return this.refreshTokenRequest().pipe(
       switchMap(res => {
-        console.log(res.data);
         // 通知后续请求继续执行
         this.refreshToking = false;
-        this.refreshToken$.next(res.data.refresh_token);
-        this.cookieService.set(CONSTS.CONGRESS, res.data.token);
+        const jwtToken = res.data;
+        console.log(res.data);
+        this.refreshToken$.next(jwtToken);
         // 重新保存新 token
-        this.tokenSrv.set(res.data);
+        this.tokenSrv.set(jwtToken);
         // 重新发起请求
         return next.handle(this.reAttachToken(req));
       }),
@@ -190,9 +186,11 @@ export class DefaultInterceptor implements HttpInterceptor {
       .subscribe(
         res => {
           // TODO: Mock expired value
-          res.expired = +new Date() + 1000 * 60 * 5;
+          //res.expired = +new Date() + 1000 * 60 * 5;
           this.refreshToking = false;
-          this.tokenSrv.set(res);
+          let jwtToken = res.data;
+          jwtToken.expired = jwtToken.expired * 1000;
+          this.tokenSrv.set(jwtToken);
         },
         () => this.toLogin()
       );

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/global-config.module.ts

@@ -34,7 +34,7 @@ const alainConfig: AlainConfig = {
     license: `A59B099A586B3851E0F0D7FDBF37B603`,
     licenseA: `C94CEE276DB2187AE6B65D56B3FC2848`
   },
-  auth: { login_url: '/passport/login' }
+  auth: { login_url: '/passport/login', refreshTime: 60 * 1000 * 15 }
 };
 
 const alainModules: any[] = [AlainThemeModule.forRoot(), DelonACLModule.forRoot()];

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/environments/environment.prod.ts

@@ -22,6 +22,6 @@ export const environment = {
   api: {
     baseUrl: '/maxkey-mgt-api',
     refreshTokenEnabled: true,
-    refreshTokenType: 're-request'
+    refreshTokenType: 'auth-refresh'
   }
 } as Environment;

+ 3 - 3
maxkey-web-frontend/maxkey-web-mgt-app/src/environments/environment.ts

@@ -27,10 +27,10 @@ export const environment = {
   production: false,
   useHash: true,
   api: {
-    baseUrl: 'http://mgt.maxkey.top/maxkey-mgt-api',
-    //baseUrl: 'http://localhost:9526/maxkey-mgt-api',
+    //baseUrl: 'http://mgt.maxkey.top/maxkey-mgt-api',
+    baseUrl: 'http://localhost:9526/maxkey-mgt-api',
     refreshTokenEnabled: true,
-    refreshTokenType: 're-request'
+    refreshTokenType: 'auth-refresh'
   },
   modules: [DelonMockModule.forRoot({ data: MOCKDATA })]
 } as Environment;

+ 2 - 2
maxkey-webs/maxkey-web-maxkey/src/main/resources/application-maxkey.properties

@@ -48,10 +48,10 @@ maxkey.server.persistence                       =${SERVER_PERSISTENCE:0}
 maxkey.app.issuer                               =CN=ConSec,CN=COM,CN=SH
 
 #jwt token
-maxkey.auth.jwt.expires                         =${SERVER_EXPIRES:600}
+maxkey.auth.jwt.expires                         =${SERVER_EXPIRES:1800}
 maxkey.auth.jwt.secret                          =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
 #must > jwt expire * 2
-maxkey.auth.jwt.refresh.expires                 =${SERVER_REFRESH_EXPIRES:1800}
+maxkey.auth.jwt.refresh.expires                 =${SERVER_REFRESH_EXPIRES:28800}
 maxkey.auth.jwt.refresh.secret                  =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
 maxkey.auth.jwt.issuer                          =${maxkey.server.uri}
 

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/resources/application-maxkey-mgt.properties

@@ -35,10 +35,10 @@ maxkey.server.authz.uri                         =https://${maxkey.server.domain}
 maxkey.server.persistence                       =${SERVER_PERSISTENCE:0}
 
 #jwt token
-maxkey.auth.jwt.expires                         =${SERVER_EXPIRES:600}
+maxkey.auth.jwt.expires                         =${SERVER_EXPIRES:1800}
 maxkey.auth.jwt.secret                          =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
 #must > jwt expire * 2
-maxkey.auth.jwt.refresh.expires                 =${SERVER_REFRESH_EXPIRES:1800}
+maxkey.auth.jwt.refresh.expires                 =${SERVER_REFRESH_EXPIRES:28800}
 maxkey.auth.jwt.refresh.secret                  =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg
 maxkey.auth.jwt.issuer                          =${maxkey.server.uri}