From 21edf2774326455d46cba95469ce8ade2cb9be9f Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Mon, 8 May 2023 13:47:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B8=E5=BF=83=E5=8C=85?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A=20&=20=E5=BD=A9=E8=89=B2?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/dev33/satoken/SaManager.java | 43 +- .../satoken/annotation/SaCheckBasic.java | 16 +- .../satoken/annotation/SaCheckDisable.java | 20 +- .../satoken/annotation/SaCheckLogin.java | 13 +- .../satoken/annotation/SaCheckPermission.java | 37 +- .../dev33/satoken/annotation/SaCheckRole.java | 30 +- .../dev33/satoken/annotation/SaCheckSafe.java | 19 +- .../cn/dev33/satoken/annotation/SaIgnore.java | 8 +- .../cn/dev33/satoken/annotation/SaMode.java | 5 +- .../satoken/application/SaApplication.java | 18 +- .../application/SaGetValueInterface.java | 41 +- .../application/SaSetValueInterface.java | 5 +- .../dev33/satoken/basic/SaBasicTemplate.java | 11 +- .../cn/dev33/satoken/basic/SaBasicUtil.java | 7 +- .../dev33/satoken/config/SaCookieConfig.java | 33 +- .../cn/dev33/satoken/config/SaSignConfig.java | 9 + .../dev33/satoken/config/SaTokenConfig.java | 249 ++-- .../satoken/config/SaTokenConfigFactory.java | 10 +- .../cn/dev33/satoken/context/SaHolder.java | 32 +- .../dev33/satoken/context/SaTokenContext.java | 33 +- .../context/SaTokenContextDefaultImpl.java | 30 +- .../context/SaTokenContextForThreadLocal.java | 12 +- .../SaTokenContextForThreadLocalStorage.java | 42 +- .../dev33/satoken/context/model/SaCookie.java | 5 +- .../satoken/context/model/SaRequest.java | 43 +- .../satoken/context/model/SaResponse.java | 9 +- .../satoken/context/model/SaStorage.java | 15 +- .../satoken/context/model/package-info.java | 3 +- .../context/second/SaTokenSecondContext.java | 8 +- .../second/SaTokenSecondContextCreator.java | 6 +- .../java/cn/dev33/satoken/dao/SaTokenDao.java | 137 +- .../satoken/dao/SaTokenDaoDefaultImpl.java | 100 +- .../cn/dev33/satoken/error/SaErrorCode.java | 103 +- .../exception/ApiDisabledException.java | 8 +- .../exception/BackResultException.java | 5 +- .../exception/DisableServiceException.java | 5 +- .../exception/IdTokenInvalidException.java | 25 - .../exception/InvalidContextException.java | 6 +- .../exception/NotBasicAuthException.java | 6 +- .../satoken/exception/NotImplException.java | 2 +- .../satoken/exception/NotLoginException.java | 16 +- .../exception/NotPermissionException.java | 6 +- .../satoken/exception/NotRoleException.java | 6 +- .../satoken/exception/NotSafeException.java | 3 +- .../exception/NotWebContextException.java | 6 +- .../exception/SaJsonConvertException.java | 3 +- .../satoken/exception/SaSignException.java | 2 +- .../satoken/exception/SaTokenException.java | 9 +- .../exception/SameTokenInvalidException.java | 6 +- .../satoken/exception/StopMatchException.java | 5 +- .../cn/dev33/satoken/filter/SaFilter.java | 14 +- .../satoken/filter/SaFilterAuthStrategy.java | 10 +- .../satoken/filter/SaFilterErrorStrategy.java | 12 +- .../cn/dev33/satoken/fun/IsRunFunction.java | 6 +- .../java/cn/dev33/satoken/fun/SaFunction.java | 8 +- .../fun/SaGenerateUniqueTokenFunction.java | 4 +- .../cn/dev33/satoken/fun/SaParamFunction.java | 7 +- .../dev33/satoken/fun/SaParamRetFunction.java | 7 +- .../cn/dev33/satoken/fun/SaRetFunction.java | 7 +- .../cn/dev33/satoken/fun/SaRouteFunction.java | 24 + .../cn/dev33/satoken/json/SaJsonTemplate.java | 16 +- .../json/SaJsonTemplateDefaultImpl.java | 18 +- .../satoken/listener/SaTokenEventCenter.java | 33 +- .../satoken/listener/SaTokenListener.java | 40 +- .../listener/SaTokenListenerForLog.java | 4 +- .../listener/SaTokenListenerForSimple.java | 4 +- .../main/java/cn/dev33/satoken/log/SaLog.java | 14 +- .../cn/dev33/satoken/log/SaLogForConsole.java | 88 +- .../cn/dev33/satoken/router/SaHttpMethod.java | 8 +- .../dev33/satoken/router/SaRouteFunction.java | 24 - .../cn/dev33/satoken/router/SaRouter.java | 15 +- .../dev33/satoken/router/SaRouterStaff.java | 4 +- .../cn/dev33/satoken/same/SaSameTemplate.java | 2 +- .../cn/dev33/satoken/same/SaSameUtil.java | 2 +- .../cn/dev33/satoken/secure/SaBase64Util.java | 5 +- .../cn/dev33/satoken/secure/SaSecureUtil.java | 4 +- .../cn/dev33/satoken/session/SaSession.java | 15 +- .../satoken/session/SaSessionCustomUtil.java | 36 +- .../cn/dev33/satoken/session/TokenSign.java | 7 +- .../cn/dev33/satoken/sign/SaSignTemplate.java | 22 +- .../cn/dev33/satoken/sign/SaSignUtil.java | 2 +- .../cn/dev33/satoken/stp/SaLoginConfig.java | 15 +- .../cn/dev33/satoken/stp/SaLoginModel.java | 12 +- .../cn/dev33/satoken/stp/SaTokenInfo.java | 86 +- .../cn/dev33/satoken/stp/StpInterface.java | 10 +- .../satoken/stp/StpInterfaceDefaultImpl.java | 5 +- .../java/cn/dev33/satoken/stp/StpLogic.java | 1195 ++++++++++------- .../java/cn/dev33/satoken/stp/StpUtil.java | 744 +++++----- .../cn/dev33/satoken/strategy/SaStrategy.java | 62 +- .../dev33/satoken/temp/SaTempDefaultImpl.java | 5 +- .../dev33/satoken/temp/SaTempInterface.java | 71 +- .../cn/dev33/satoken/temp/SaTempUtil.java | 31 +- .../java/cn/dev33/satoken/util/SaFoxUtil.java | 42 +- .../java/cn/dev33/satoken/util/SaResult.java | 28 +- .../cn/dev33/satoken/util/SaTokenConsts.java | 41 +- .../cn/dev33/satoken/util/StrFormatter.java | 3 +- .../SaTokenAloneRedisClusterApplication.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../com/pj/SaTokenAloneRedisApplication.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../java/com/pj/SaTokenCaseApplication.java | 2 +- .../com/pj/cases/test/TestController.java | 2 +- .../com/pj/cases/up/DisableController.java | 2 +- .../com/pj/cases/up/HttpBasicController.java | 2 +- .../com/pj/cases/up/MutexLoginController.java | 2 +- .../com/pj/cases/up/NotCookieController.java | 2 +- .../com/pj/cases/up/RememberMeController.java | 2 +- .../com/pj/cases/up/SafeAuthController.java | 2 +- .../pj/cases/up/SearchSessionController.java | 2 +- .../com/pj/cases/up/SecureController.java | 2 +- .../com/pj/cases/up/SwitchToController.java | 2 +- .../com/pj/cases/use/AtCheckController.java | 2 +- .../com/pj/cases/use/JurAuthController.java | 2 +- .../com/pj/cases/use/KickoutController.java | 2 +- .../com/pj/cases/use/LoginAuthController.java | 2 +- .../pj/cases/use/RouterCheckController.java | 2 +- .../com/pj/cases/use/SaSessionController.java | 2 +- .../java/com/pj/current/NotFoundHandle.java | 2 +- .../src/main/java/com/pj/model/SysUser.java | 2 +- .../com/pj/satoken/MySaTokenListener.java | 2 +- .../java/com/pj/satoken/SaLogForSlf4j.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../java/com/pj/satoken/StpInterfaceImpl.java | 2 +- .../main/java/com/pj/satoken/StpUserUtil.java | 2 +- .../com/pj/satoken/at/SaUserCheckLogin.java | 2 +- .../pj/satoken/at/SaUserCheckPermission.java | 2 +- .../com/pj/satoken/at/SaUserCheckRole.java | 2 +- .../java/com/pj/satoken/at/StpUserUtil.java | 2 +- .../main/java/com/pj/ConsumerApplication.java | 2 +- .../main/java/com/pj/ProviderApplication.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../java/com/pj/test/TestJwtController.java | 2 +- .../com/pj/SaOAuth2ClientApplication.java | 2 +- .../pj/oauth2/SaOAuthClientController.java | 2 +- .../src/main/java/com/pj/utils/SoMap.java | 2 +- .../com/pj/SaOAuth2ServerApplication.java | 2 +- .../pj/oauth2/SaOAuth2ServerController.java | 2 +- .../com/pj/oauth2/SaOAuth2TemplateImpl.java | 2 +- .../src/main/java/com/pj/SaQuicikStartup.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../java/com/pj/satoken/SaLogForSolon.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/SSOController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../main/java/com/pj/test/UserController.java | 2 +- .../src/main/java/com/pj/util/Ttime.java | 2 +- .../java/com/pj/SaTokenDemoApplication.java | 4 +- .../java/com/pj/current/NotFoundHandle.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/AtController.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../src/main/java/com/pj/util/Ttime.java | 2 +- .../java/com/pj/SaTokenDemoApplication.java | 2 +- .../java/com/pj/current/NotFoundHandle.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/AtController.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../src/main/java/com/pj/util/Ttime.java | 2 +- .../java/com/pj/SaTokenDemoApplication.java | 2 +- .../java/com/pj/current/NotFoundHandle.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/AtController.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../src/main/java/com/pj/util/Ttime.java | 2 +- .../com/pj/SaTokenSpringBoot3Application.java | 2 +- .../java/com/pj/current/NotFoundHandle.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/AtController.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../src/main/java/com/pj/util/Ttime.java | 2 +- .../src/main/java/com/pj/h5/CorsFilter.java | 2 +- .../src/main/java/com/pj/h5/H5Controller.java | 2 +- .../com/pj/sso/GlobalExceptionFilter.java | 2 +- .../java/com/pj/sso/SsoServerController.java | 2 +- .../src/main/java/com/pj/SaSso1ClientApp.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- .../src/main/java/com/pj/h5/CorsFilter.java | 2 +- .../src/main/java/com/pj/h5/H5Controller.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- .../src/main/java/com/pj/h5/CorsFilter.java | 2 +- .../src/main/java/com/pj/h5/H5Controller.java | 2 +- .../com/pj/sso/GlobalExceptionHandler.java | 2 +- .../java/com/pj/sso/SsoServerController.java | 2 +- .../java/com/pj/SaSso1ClientApplication.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- .../src/main/java/com/pj/h5/CorsFilter.java | 2 +- .../src/main/java/com/pj/h5/H5Controller.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- .../main/java/com/pj/sso/SsoRequestUtil.java | 2 +- .../com/pj/sso/util/MyHttpSessionHolder.java | 2 +- .../java/com/pj/sso/SsoClientController.java | 2 +- sa-token-demo/sa-token-demo-test/pom.xml | 64 +- .../main/java/com/pj/SaTokenApplication.java | 4 +- .../java/com/pj/current/NotFoundHandle.java | 2 +- .../src/main/java/com/pj/model/SysUser.java | 2 +- .../java/com/pj/satoken/SaLogForSlf4j.java | 7 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/satoken/StpUserUtil.java | 2 +- .../main/java/com/pj/test/AtController.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- .../com/pj/test/StressTestController.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../src/main/java/com/pj/util/Ttime.java | 2 +- .../src/main/resources/application.yml | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../SaTokenWebfluxSpringboot3Application.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../com/pj/SaTokenWebfluxApplication.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/test/TestController.java | 2 +- .../pj/SaTokenWebSocketSpringApplication.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- .../java/com/pj/ws/MyWebSocketHandler.java | 2 +- .../main/java/com/pj/ws/WebSocketConfig.java | 2 +- .../java/com/pj/ws/WebSocketInterceptor.java | 2 +- .../com/pj/SaTokenWebSocketApplication.java | 2 +- .../java/com/pj/test/LoginController.java | 2 +- sa-token-doc/fun/log.md | 2 +- sa-token-doc/micro/gateway-auth.md | 2 +- sa-token-doc/sso/sso-type1.md | 2 +- .../satoken/dao/alone/SaAloneRedisInject.java | 2 +- .../SaTokenSecondContextCreatorForDubbo.java | 2 +- .../dubbo/SaTokenSecondContextForDubbo.java | 2 +- .../filter/SaTokenDubboConsumerFilter.java | 2 +- .../filter/SaTokenDubboProviderFilter.java | 2 +- .../dubbo/model/SaRequestForDubbo.java | 2 +- .../dubbo/model/SaResponseForDubbo.java | 2 +- .../dubbo/model/SaStorageForDubbo.java | 2 +- .../SaTokenSecondContextCreatorForDubbo3.java | 2 +- .../dubbo3/SaTokenSecondContextForDubbo3.java | 2 +- .../filter/SaTokenDubbo3ConsumerFilter.java | 2 +- .../filter/SaTokenDubbo3ProviderFilter.java | 2 +- .../dubbo3/model/SaRequestForDubbo3.java | 2 +- .../dubbo3/model/SaResponseForDubbo3.java | 2 +- .../dubbo3/model/SaStorageForDubbo3.java | 2 +- .../dao/SaSessionForFastjsonCustomized.java | 2 +- .../dao/SaSessionForFastjson2Customized.java | 2 +- .../dao/SaSessionForJacksonCustomized.java | 2 +- .../satoken/dao/SaTokenDaoRedisJackson.java | 2 +- .../cn/dev33/satoken/dao/SaTokenDaoRedis.java | 2 +- .../dao/SaSessionForJacksonCustomized.java | 2 +- .../thymeleaf/dialect/SaTokenDialect.java | 2 +- .../dialect/SaTokenTagProcessor.java | 2 +- .../cn/dev33/satoken/jwt/SaJwtTemplate.java | 2 +- .../java/cn/dev33/satoken/jwt/SaJwtUtil.java | 2 +- .../satoken/jwt/StpLogicJwtForMixin.java | 2 +- .../satoken/jwt/StpLogicJwtForSimple.java | 2 +- .../satoken/jwt/StpLogicJwtForStateless.java | 2 +- .../satoken/jwt/error/SaJwtErrorCode.java | 2 +- .../satoken/jwt/exception/SaJwtException.java | 2 +- .../dev33/satoken/oauth2/SaOAuth2Manager.java | 2 +- .../satoken/oauth2/config/SaOAuth2Config.java | 2 +- .../oauth2/error/SaOAuth2ErrorCode.java | 2 +- .../oauth2/exception/SaOAuth2Exception.java | 2 +- .../satoken/oauth2/logic/SaOAuth2Consts.java | 6 +- .../satoken/oauth2/logic/SaOAuth2Handle.java | 2 +- .../oauth2/logic/SaOAuth2Template.java | 2 +- .../satoken/oauth2/logic/SaOAuth2Util.java | 2 +- .../oauth2/model/AccessTokenModel.java | 2 +- .../oauth2/model/ClientTokenModel.java | 2 +- .../dev33/satoken/oauth2/model/CodeModel.java | 2 +- .../oauth2/model/RefreshTokenModel.java | 2 +- .../oauth2/model/RequestAuthModel.java | 2 +- .../satoken/oauth2/model/SaClientModel.java | 2 +- .../cn/dev33/satoken/quick/SaQuickInject.java | 2 +- .../dev33/satoken/quick/SaQuickManager.java | 2 +- .../dev33/satoken/quick/SaQuickRegister.java | 2 +- .../satoken/quick/config/SaQuickConfig.java | 2 +- .../satoken/quick/web/SaQuickController.java | 2 +- .../cn/dev33/satoken/aop/SaCheckAspect.java | 2 +- .../cn/dev33/satoken/config/SaSsoConfig.java | 2 +- .../cn/dev33/satoken/sso/SaSsoConsts.java | 2 +- .../cn/dev33/satoken/sso/SaSsoManager.java | 2 +- .../cn/dev33/satoken/sso/SaSsoProcessor.java | 2 +- .../cn/dev33/satoken/sso/SaSsoTemplate.java | 2 +- .../java/cn/dev33/satoken/sso/SaSsoUtil.java | 2 +- .../satoken/sso/error/SaSsoErrorCode.java | 2 +- .../satoken/sso/exception/SaSsoException.java | 2 +- .../cn/dev33/satoken/sso/name/ApiName.java | 2 +- .../cn/dev33/satoken/sso/name/ParamName.java | 2 +- .../cn/dev33/satoken/temp/jwt/SaJwtUtil.java | 2 +- .../dev33/satoken/temp/jwt/SaTempForJwt.java | 2 +- .../temp/jwt/error/SaTempJwtErrorCode.java | 2 +- .../servlet/error/SaServletErrorCode.java | 2 +- .../servlet/model/SaRequestForServlet.java | 2 +- .../servlet/model/SaResponseForServlet.java | 2 +- .../servlet/model/SaStorageForServlet.java | 2 +- .../reactor/context/SaReactorHolder.java | 2 +- .../reactor/context/SaReactorSyncHolder.java | 2 +- .../error/SaReactorSpringBootErrorCode.java | 2 +- .../reactor/filter/SaReactorFilter.java | 2 +- .../reactor/model/SaRequestForReactor.java | 2 +- .../reactor/model/SaResponseForReactor.java | 2 +- .../reactor/model/SaStorageForReactor.java | 2 +- .../SaTokenContextForSpringReactor.java | 2 +- .../spring/SaTokenContextRegister.java | 2 +- .../reactor/context/SaReactorHolder.java | 2 +- .../reactor/context/SaReactorSyncHolder.java | 2 +- .../error/SaReactorSpringBootErrorCode.java | 2 +- .../reactor/filter/SaReactorFilter.java | 2 +- .../reactor/model/SaRequestForReactor.java | 2 +- .../reactor/model/SaResponseForReactor.java | 2 +- .../reactor/model/SaStorageForReactor.java | 2 +- .../SaTokenContextForSpringReactor.java | 2 +- .../spring/SaTokenContextRegister.java | 2 +- .../servlet/error/SaServletErrorCode.java | 2 +- .../servlet/model/SaRequestForServlet.java | 2 +- .../servlet/model/SaResponseForServlet.java | 2 +- .../servlet/model/SaStorageForServlet.java | 2 +- .../satoken/solon/error/SaSolonErrorCode.java | 2 +- .../src/test/java/demo/Config.java | 84 +- .../src/test/java/demo2/Config.java | 53 +- .../satoken/error/SaSpringBootErrorCode.java | 2 +- .../cn/dev33/satoken/spring/SaBeanInject.java | 2 +- .../dev33/satoken/spring/SaBeanRegister.java | 2 +- .../satoken/spring/SaPathMatcherHolder.java | 2 +- .../spring/json/SaJsonTemplateForJackson.java | 2 +- .../spring/oauth2/SaOAuth2BeanInject.java | 2 +- .../spring/oauth2/SaOAuth2BeanRegister.java | 2 +- .../satoken/spring/sso/SaSsoBeanInject.java | 2 +- .../satoken/spring/sso/SaSsoBeanRegister.java | 2 +- .../dev33/satoken/filter/SaServletFilter.java | 2 +- .../satoken/interceptor/SaInterceptor.java | 2 +- .../spring/SaTokenContextForSpring.java | 2 +- .../spring/SaTokenContextRegister.java | 2 +- .../dev33/satoken/spring/SpringMVCUtil.java | 2 +- .../dev33/satoken/filter/SaServletFilter.java | 2 +- .../satoken/interceptor/SaInterceptor.java | 2 +- ...TokenContextForSpringInJakartaServlet.java | 2 +- .../spring/SaTokenContextRegister.java | 2 +- .../dev33/satoken/spring/SpringMVCUtil.java | 2 +- .../java/com/pj/test/JwtForMixinTest.java | 2 +- .../java/com/pj/test/JwtForSimpleTest.java | 2 +- .../java/com/pj/test/JwtForStatelessTest.java | 2 +- .../core/application/SaApplicationTest.java | 2 +- .../core/config/SaTokenConfigTest.java | 2 +- .../core/context/model/SaCookieTest.java | 2 +- .../model/SaTokenContextDefaultImplTest.java | 2 +- .../satoken/core/dao/SaTokenDaoTest.java | 2 +- .../satoken/core/fun/IsRunFunctionTest.java | 2 +- .../json/SaJsonTemplateDefaultImplTest.java | 2 +- .../satoken/core/secure/SaBase64UtilTest.java | 2 +- .../satoken/core/secure/SaSecureUtilTest.java | 2 +- .../core/session/SaSessionCustomUtilTest.java | 2 +- .../satoken/core/session/SaSessionTest.java | 2 +- .../satoken/core/session/TokenSignTest.java | 2 +- .../satoken/core/sign/SaSignTemplateTest.java | 2 +- .../dev33/satoken/core/stp/TokenInfoTest.java | 2 +- .../dev33/satoken/core/temp/SaTempTest.java | 2 +- .../satoken/core/util/SaFoxUtilTest.java | 2 +- .../dev33/satoken/core/util/SaResultTest.java | 2 +- .../annotation/SaAnnotationController.java | 2 +- .../SaAnnotationIgnoreController.java | 2 +- .../integrate/configure/HandlerException.java | 2 +- .../integrate/configure/SaTokenConfigure.java | 2 +- .../integrate/configure/StpInterfaceImpl.java | 2 +- .../configure/inject/MySaOAuth2Template.java | 2 +- .../configure/inject/MySaSsoTemplate.java | 2 +- .../integrate/login/LoginController.java | 2 +- .../integrate/login/LoginControllerTest.java | 2 +- .../integrate/more/MoreController.java | 2 +- .../integrate/more/MoreControllerTest.java | 2 +- .../integrate/router/RouterController.java | 2 +- .../router/RouterControllerTest.java | 2 +- .../integrate/router/SaTokenConfigure2.java | 2 +- .../integrate/same/SaSameTokenController.java | 2 +- .../same/SaSameTokenControllerTest.java | 2 +- .../satoken/springboot/ManyLoginTest.java | 2 +- .../satoken/springboot/SpringMVCUtilTest.java | 2 +- .../java/cn/dev33/satoken/util/SoMap.java | 2 +- 383 files changed, 2832 insertions(+), 2033 deletions(-) delete mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/exception/IdTokenInvalidException.java create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRouteFunction.java delete mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouteFunction.java diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java index 8e0d108b..59ccab70 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java @@ -28,14 +28,15 @@ import java.util.LinkedHashMap; import java.util.Map; /** - * 管理 Sa-Token 所有全局组件 - * @author kong + * 管理 Sa-Token 所有全局组件,可通过此类快速获取、写入各种全局组件对象 * + * @author click33 + * @since <= 1.34.0 */ public class SaManager { /** - * 配置文件 Bean + * 全局配置对象 */ public volatile static SaTokenConfig config; public static void setConfig(SaTokenConfig config) { @@ -45,16 +46,26 @@ public class SaManager { if(config !=null && config.getIsPrint()) { SaFoxUtil.printSaToken(); } - + + // 如果此 config 对象没有配置 isColorLog 的值,则框架为它自动判断一下 + if(config != null && config.getIsLog() != null && config.getIsLog() && config.getIsColorLog() == null) { + config.setIsColorLog(SaFoxUtil.isCanColorLog()); + } + // $$ 全局事件 SaTokenEventCenter.doSetConfig(config); - // 调用一次StpUtil中的方法,保证其可以尽早的初始化 StpLogic + // 调用一次 StpUtil 中的方法,保证其可以尽早的初始化 StpLogic StpUtil.getLoginType(); } private static void setConfigMethod(SaTokenConfig config) { SaManager.config = config; } + + /** + * 获取 Sa-Token 的全局配置信息 + * @return + */ public static SaTokenConfig getConfig() { if (config == null) { synchronized (SaManager.class) { @@ -67,7 +78,7 @@ public class SaManager { } /** - * 持久化 Bean + * 持久化组件 */ private volatile static SaTokenDao saTokenDao; public static void setSaTokenDao(SaTokenDao saTokenDao) { @@ -92,7 +103,7 @@ public class SaManager { } /** - * 权限认证 Bean + * 权限数据源组件 */ private volatile static StpInterface stpInterface; public static void setStpInterface(StpInterface stpInterface) { @@ -111,7 +122,7 @@ public class SaManager { } /** - * 上下文Context Bean + * 一级上下文 SaTokenContextContext */ private volatile static SaTokenContext saTokenContext; public static void setSaTokenContext(SaTokenContext saTokenContext) { @@ -123,7 +134,7 @@ public class SaManager { } /** - * 二级Context + * 二级上下文 SaTokenSecondContext */ private volatile static SaTokenSecondContext saTokenSecondContext; public static void setSaTokenSecondContext(SaTokenSecondContext saTokenSecondContext) { @@ -135,7 +146,7 @@ public class SaManager { } /** - * 获取一个可用的SaTokenContext + * 获取一个可用的 SaTokenContext (按照一级上下文、二级上下文、默认上下文的顺序来判断) * @return / */ public static SaTokenContext getSaTokenContextOrSecond() { @@ -159,7 +170,7 @@ public class SaManager { } /** - * 临时令牌验证模块 Bean + * 临时 token 认证模块 */ private volatile static SaTempInterface saTemp; public static void setSaTemp(SaTempInterface saTemp) { @@ -178,7 +189,7 @@ public class SaManager { } /** - * JSON 转换器 Bean + * JSON 转换器 */ private volatile static SaJsonTemplate saJsonTemplate; public static void setSaJsonTemplate(SaJsonTemplate saJsonTemplate) { @@ -197,7 +208,7 @@ public class SaManager { } /** - * 参数签名 Bean + * API 参数签名 */ private volatile static SaSignTemplate saSignTemplate; public static void setSaSignTemplate(SaSignTemplate saSignTemplate) { @@ -216,7 +227,7 @@ public class SaManager { } /** - * Same-Token Bean + * Same-Token 同源系统认证模块 */ private volatile static SaSameTemplate saSameTemplate; public static void setSaSameTemplate(SaSameTemplate saSameTemplate) { @@ -247,7 +258,7 @@ public class SaManager { } /** - * StpLogic集合, 记录框架所有成功初始化的StpLogic + * StpLogic 集合, 记录框架所有成功初始化的 StpLogic */ public static Map stpLogicMap = new LinkedHashMap(); @@ -269,7 +280,7 @@ public class SaManager { } /** - * 根据 LoginType 获取对应的StpLogic,如果不存在,isCreate参数=是否自动创建并返回 + * 根据 LoginType 获取对应的StpLogic,如果不存在,isCreate = 是否自动创建并返回 * @param loginType 对应的账号类型 * @param isCreate 在 StpLogic 不存在时,true=新建并返回,false=抛出异常 * @return 对应的StpLogic diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java index 3c3821b5..f4fde9ff 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java @@ -1,17 +1,19 @@ package cn.dev33.satoken.annotation; +import cn.dev33.satoken.basic.SaBasicTemplate; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import cn.dev33.satoken.basic.SaBasicTemplate; - /** - * Http Basic 认证校验:只有通过 Basic 认证后才能进入该方法 - *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * Http Basic 认证校验:只有通过 Http Basic 认证后才能进入该方法,否则抛出异常。 * + *

可标注在方法、类上(效果等同于标注在此类的所有方法上) + * + * @author click33 + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) @@ -19,13 +21,13 @@ public @interface SaCheckBasic { /** * 领域 - * @return see note + * @return / */ String realm() default SaBasicTemplate.DEFAULT_REALM; /** * 需要校验的账号密码,格式形如 sa:123456 - * @return see note + * @return / */ String account() default ""; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckDisable.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckDisable.java index 4f99da9d..db9afd7c 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckDisable.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckDisable.java @@ -1,38 +1,40 @@ package cn.dev33.satoken.annotation; +import cn.dev33.satoken.util.SaTokenConsts; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import cn.dev33.satoken.util.SaTokenConsts; - /** - * 服务禁用校验:在没有被禁用指定服务的情况下才可以进入方法 + * 服务禁用校验:判断当前账号是否被禁用了指定服务,如果被禁用,会抛出异常,没有被禁用才能进入方法。 * - *

可标注在函数、类上(效果等同于标注在此类的所有方法上) + *

可标注在方法、类上(效果等同于标注在此类的所有方法上) * * @author videomonster + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) public @interface SaCheckDisable { /** - * 多账号体系下所属的账号体系标识 - * @return see note + * 多账号体系下所属的账号体系标识,非多账号体系无需关注此值 + * + * @return / */ String type() default ""; /** - * 服务标识 (要校验是否禁用的服务名称) + * 服务标识 (具体你要校验是否禁用的服务名称) * - * @return see note + * @return / */ String[] value() default { SaTokenConsts.DEFAULT_DISABLE_SERVICE }; /** - * 封禁等级(只有 封禁等级 ≥ 此值 才会抛出异常) + * 封禁等级(如果当前账号的被封禁等级 ≥ 此值,请求就无法进入方法) * * @return / */ diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java index 759d4eda..de7430f7 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckLogin.java @@ -6,18 +6,21 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * 登录认证校验:只有登录之后才能进入该方法 - *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * 登录认证校验:只有登录之后才能进入该方法。 * + *

可标注在方法、类上(效果等同于标注在此类的所有方法上) + * + * @author kong + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) public @interface SaCheckLogin { /** - * 多账号体系下所属的账号体系标识 - * @return see note + * 多账号体系下所属的账号体系标识,非多账号体系无需关注此值 + * + * @return / */ String type() default ""; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java index 784bcef6..0c5a3574 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java @@ -6,44 +6,49 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * 权限认证校验:必须具有指定权限才能进入该方法 - *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * 权限认证校验:必须具有指定权限才能进入该方法。 * + *

可标注在方法、类上(效果等同于标注在此类的所有方法上) + * + * @author click33 + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD,ElementType.TYPE}) public @interface SaCheckPermission { /** - * 需要校验的权限码 - * @return 需要校验的权限码 + * 多账号体系下所属的账号体系标识,非多账号体系无需关注此值 + * + * @return / + */ + String type() default ""; + + /** + * 需要校验的权限码 [ 数组 ] + * + * @return / */ String [] value() default {}; /** * 验证模式:AND | OR,默认AND - * @return 验证模式 + * + * @return / */ SaMode mode() default SaMode.AND; - /** - * 多账号体系下所属的账号体系标识 - * @return see note - */ - String type() default ""; - /** - * 在权限认证不通过时的次要选择,两者只要其一认证成功即可通过校验 + * 在权限校验不通过时的次要选择,两者只要其一校验成功即可通过校验 * *

* 例1:@SaCheckPermission(value="user-add", orRole="admin"), - * 代表本次请求只要具有 user-add权限 或 admin角色 其一即可通过校验 + * 代表本次请求只要具有 user-add权限 或 admin角色 其一即可通过校验。 *

* *

- * 例2: orRole = {"admin", "manager", "staff"},具有三个角色其一即可
- * 例3: orRole = {"admin, manager, staff"},必须三个角色同时具备 + * 例2: orRole = {"admin", "manager", "staff"},具有三个角色其一即可。
+ * 例3: orRole = {"admin, manager, staff"},必须三个角色同时具备。 *

* * @return / diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java index 8dd422bb..b57ab221 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckRole.java @@ -6,32 +6,36 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * 角色认证校验:必须具有指定角色标识才能进入该方法 - *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * 角色认证校验:必须具有指定角色标识才能进入该方法。 * + *

可标注在方法、类上(效果等同于标注在此类的所有方法上) + * + * @author click33 + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD,ElementType.TYPE}) public @interface SaCheckRole { /** - * 需要校验的角色标识 - * @return 需要校验的角色标识 + * 多账号体系下所属的账号体系标识,非多账号体系无需关注此值 + * + * @return / + */ + String type() default ""; + + /** + * 需要校验的角色标识 [ 数组 ] + * + * @return / */ String [] value() default {}; /** * 验证模式:AND | OR,默认AND - * @return 验证模式 + * + * @return / */ SaMode mode() default SaMode.AND; - /** - * 账号类型 - *

建议使用常量,避免因错误拼写带来的bug - * @return see note - */ - String type() default ""; - } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckSafe.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckSafe.java index a22f8bf7..34048074 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckSafe.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckSafe.java @@ -8,24 +8,27 @@ import java.lang.annotation.Target; import cn.dev33.satoken.util.SaTokenConsts; /** - * 二级认证校验:必须二级认证之后才能进入该方法 + * 二级认证校验:客户端必须完成二级认证之后,才能进入该方法,否则将被抛出异常。 * - *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + *

可标注在方法、类上(效果等同于标注在此类的所有方法上)。 * + * @author click33 + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) public @interface SaCheckSafe { - /** - * 多账号体系下所属的账号体系标识 - * @return / - */ + /** + * 多账号体系下所属的账号体系标识,非多账号体系无需关注此值 + * + * @return / + */ String type() default ""; /** - * 要校验的服务 + * 要校验的服务 + * * @return / */ String value() default SaTokenConsts.DEFAULT_SAFE_AUTH_SERVICE; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaIgnore.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaIgnore.java index 5c9be9a2..454ee0f1 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaIgnore.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaIgnore.java @@ -6,12 +6,12 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * 忽略认证:表示被修饰的方法或类无需进行注解认证和路由拦截认证 + * 忽略认证:表示被修饰的方法或类无需进行注解认证和路由拦截认证。 * - *

请注意:此注解的忽略效果只针对 SaInterceptor拦截器 和 AOP注解鉴权 生效,对自定义拦截器与过滤器不生效

+ *

请注意:此注解的忽略效果只针对 SaInterceptor拦截器 和 AOP注解鉴权 生效,对自定义拦截器与过滤器不生效。

* - * @author kong - * @since: 2022-8-21 + * @author click33 + * @since <= 1.34.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java index 684bcce3..57c5f6c5 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaMode.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.annotation; /** - * 注解鉴权的验证模式 - * @author kong + * 注解鉴权的验证模式 * + * @author click33 + * @since <= 1.34.0 */ public enum SaMode { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/application/SaApplication.java b/sa-token-core/src/main/java/cn/dev33/satoken/application/SaApplication.java index df8c11ea..51f3cb53 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/application/SaApplication.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/application/SaApplication.java @@ -7,10 +7,11 @@ import cn.dev33.satoken.SaManager; import cn.dev33.satoken.dao.SaTokenDao; /** - * Application Model,全局作用域的读取值对象 - *

在应用全局范围内: 存值、取值 + * Application Model,全局作用域的读取值对象。 + * + *

在应用全局范围内: 存值、取值。数据在应用重启后失效,如果集成了 Redis,则在 Redis 重启后失效。 * - * @author kong + * @author click33 * @since: 2022-8-17 */ public class SaApplication implements SaSetValueInterface { @@ -57,15 +58,15 @@ public class SaApplication implements SaSetValueInterface { } /** - * 返回存入的所有 key + * 返回当前存入的所有 key * @return / */ public List keys() { - // 查出来 + // 从缓存中查询出所有此前缀的 key String prefix = splicingDataKey(""); List list = SaManager.getSaTokenDao().searchData(prefix, "", 0, -1, true); - // 裁减掉固定前缀 + // 裁减掉固定前缀,保留 key 名称,塞入新集合 int prefixLength = prefix.length(); List list2 = new ArrayList<>(); if(list != null) { @@ -79,7 +80,7 @@ public class SaApplication implements SaSetValueInterface { } /** - * 清空存入的所有 key + * 清空当前存入的所有 key */ public void clear() { List keys = keys(); @@ -89,7 +90,8 @@ public class SaApplication implements SaSetValueInterface { } /** - * 拼接key:变量存储时使用的key + * 拼接key:当存入一个变量时,应该使用的 key + * * @param key 原始 key * @return 拼接后的 key 值 */ diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/application/SaGetValueInterface.java b/sa-token-core/src/main/java/cn/dev33/satoken/application/SaGetValueInterface.java index 97bda787..6b6f3faa 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/application/SaGetValueInterface.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/application/SaGetValueInterface.java @@ -3,9 +3,10 @@ package cn.dev33.satoken.application; import cn.dev33.satoken.util.SaFoxUtil; /** - * 对取值的一组方法封装 + * 对取值的一组方法封装 + *

封装 SaStorage、SaSession、SaApplication 等存取值的一些固定方法,减少重复编码

* - * @author kong + * @author click33 * @since: 2022-8-16 */ public interface SaGetValueInterface { @@ -17,20 +18,20 @@ public interface SaGetValueInterface { * @param key key * @return 值 */ - public abstract Object get(String key); + Object get(String key); // --------- 接口提供封装的方法 /** - * - * 取值 (指定默认值) + * 取值 (指定默认值) + * * @param 默认值的类型 * @param key key * @param defaultValue 取不到值时返回的默认值 * @return 值 */ - public default T get(String key, T defaultValue) { + default T get(String key, T defaultValue) { return getValueByDefaultValue(get(key), defaultValue); } @@ -39,7 +40,7 @@ public interface SaGetValueInterface { * @param key key * @return 值 */ - public default String getString(String key) { + default String getString(String key) { Object value = get(key); if(value == null) { return null; @@ -52,7 +53,7 @@ public interface SaGetValueInterface { * @param key key * @return 值 */ - public default int getInt(String key) { + default int getInt(String key) { return getValueByDefaultValue(get(key), 0); } @@ -61,7 +62,7 @@ public interface SaGetValueInterface { * @param key key * @return 值 */ - public default long getLong(String key) { + default long getLong(String key) { return getValueByDefaultValue(get(key), 0L); } @@ -70,7 +71,7 @@ public interface SaGetValueInterface { * @param key key * @return 值 */ - public default double getDouble(String key) { + default double getDouble(String key) { return getValueByDefaultValue(get(key), 0.0); } @@ -79,7 +80,7 @@ public interface SaGetValueInterface { * @param key key * @return 值 */ - public default float getFloat(String key) { + default float getFloat(String key) { return getValueByDefaultValue(get(key), 0.0f); } @@ -90,12 +91,12 @@ public interface SaGetValueInterface { * @param cs 指定转换类型 * @return 值 */ - public default T getModel(String key, Class cs) { + default T getModel(String key, Class cs) { return SaFoxUtil.getValueByType(get(key), cs); } /** - * 取值 (指定转换类型, 并指定值为Null时返回的默认值) + * 取值 (指定转换类型, 并指定值为 null 时返回的默认值) * @param 泛型 * @param key key * @param cs 指定转换类型 @@ -103,7 +104,7 @@ public interface SaGetValueInterface { * @return 值 */ @SuppressWarnings("unchecked") - public default T getModel(String key, Class cs, Object defaultValue) { + default T getModel(String key, Class cs, Object defaultValue) { Object value = get(key); if(valueIsNull(value)) { return (T)defaultValue; @@ -112,11 +113,11 @@ public interface SaGetValueInterface { } /** - * 是否含有某个key - * @param key has + * 是否含有某个 key + * @param key 指定 key * @return 是否含有 */ - public default boolean has(String key) { + default boolean has(String key) { return !valueIsNull(get(key)); } @@ -128,7 +129,7 @@ public interface SaGetValueInterface { * @param value 指定值 * @return 此value是否为null */ - public default boolean valueIsNull(Object value) { + default boolean valueIsNull(Object value) { return value == null || value.equals(""); } @@ -140,14 +141,14 @@ public interface SaGetValueInterface { * @return 转换后的值 */ @SuppressWarnings("unchecked") - public default T getValueByDefaultValue(Object value, T defaultValue) { + default T getValueByDefaultValue(Object value, T defaultValue) { // 如果 obj 为 null,则直接返回默认值 if(valueIsNull(value)) { return (T)defaultValue; } - // 开始转换 + // 开始转换类型 Class cs = (Class) defaultValue.getClass(); return SaFoxUtil.getValueByType(value, cs); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/application/SaSetValueInterface.java b/sa-token-core/src/main/java/cn/dev33/satoken/application/SaSetValueInterface.java index a7edc991..d268fc2c 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/application/SaSetValueInterface.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/application/SaSetValueInterface.java @@ -3,9 +3,10 @@ package cn.dev33.satoken.application; import cn.dev33.satoken.fun.SaRetFunction; /** - * 对写值的一组方法封装 + * 对写值的一组方法封装 + *

封装 SaStorage、SaSession、SaApplication 等存取值的一些固定方法,减少重复编码

* - * @author kong + * @author click33 * @since: 2022-8-17 */ public interface SaSetValueInterface extends SaGetValueInterface { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicTemplate.java b/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicTemplate.java index c63b971a..e6b75427 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicTemplate.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicTemplate.java @@ -8,19 +8,20 @@ import cn.dev33.satoken.secure.SaBase64Util; import cn.dev33.satoken.util.SaFoxUtil; /** - * Sa-Token Http Basic 认证模块 - * @author kong + * Sa-Token Http Basic 认证模块 * + * @author click33 + * @since <= 1.34.0 */ public class SaBasicTemplate { /** - * 默认的 Realm 名称 + * 默认的 Realm 领域名称 */ public static final String DEFAULT_REALM = "Sa-Token"; /** - * 设置响应头,并抛出异常 + * 在校验失败时,设置响应头,并抛出异常 * @param realm 领域 */ public void throwNotBasicAuthException(String realm) { @@ -34,7 +35,7 @@ public class SaBasicTemplate { */ public String getAuthorizationValue() { - // 获取请求头 Authorization 参数 + // 获取前端提交的请求头 Authorization 参数 String authorization = SaHolder.getRequest().getHeader("Authorization"); // 如果不是以 Basic 作为前缀,则视为无效 diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicUtil.java index 5c5f600c..5361b9b5 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/basic/SaBasicUtil.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.basic; /** - * Sa-Token Http Basic 认证 Util - * @author kong + * Sa-Token Http Basic 认证模块,Util 工具类 * + * @author click33 + * @since <= 1.34.0 */ public class SaBasicUtil { @@ -11,7 +12,7 @@ public class SaBasicUtil { } /** - * 底层 SaBasicTemplate 对象 + * 底层使用的 SaBasicTemplate 对象 */ public static SaBasicTemplate saBasicTemplate = new SaBasicTemplate(); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaCookieConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaCookieConfig.java index 8c260f99..fd16eb2a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaCookieConfig.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaCookieConfig.java @@ -1,24 +1,31 @@ package cn.dev33.satoken.config; /** - * Sa-Token Cookie写入 相关配置 - * @author kong + * Sa-Token Cookie写入 相关配置 * + * @author click33 + * @since <= 1.34.0 */ public class SaCookieConfig { - + + /* + Cookie 功能为浏览器通用标准,建议大家自行搜索文章了解各个属性的功能含义,此处源码仅做简单解释。 + */ + /** - * 域(写入Cookie时显式指定的作用域, 常用于单点登录二级域名共享Cookie的场景) + * 作用域 + *

写入 Cookie 时显式指定的作用域, 常用于单点登录二级域名共享 Cookie 的场景。

+ *

一般情况下你不需要设置此值,因为浏览器默认会把 Cookie 写到当前域名下。

*/ private String domain; /** - * 路径 + * 路径 (一般只有当你在一个域名下部署多个项目时才会用到此值。) */ private String path; /** - * 是否只在 https 协议下有效 + * 是否只在 https 协议下有效 */ private Boolean secure = false; @@ -33,14 +40,20 @@ public class SaCookieConfig { private String sameSite; /** - * @return 域 (写入Cookie时显式指定的作用域, 常用于单点登录二级域名共享Cookie的场景) + * 获取:Cookie 作用域 + *

写入 Cookie 时显式指定的作用域, 常用于单点登录二级域名共享 Cookie 的场景。

+ *

一般情况下你不需要设置此值,因为浏览器默认会把 Cookie 写到当前域名下。

+ * @return / */ public String getDomain() { return domain; } /** - * @param domain 域 (写入Cookie时显式指定的作用域, 常用于单点登录二级域名共享Cookie的场景) + * 写入:Cookie 作用域 + *

写入 Cookie 时显式指定的作用域, 常用于单点登录二级域名共享 Cookie 的场景。

+ *

一般情况下你不需要设置此值,因为浏览器默认会把 Cookie 写到当前域名下。

+ * @param domain / * @return 对象自身 */ public SaCookieConfig setDomain(String domain) { @@ -49,14 +62,14 @@ public class SaCookieConfig { } /** - * @return 路径 + * @return 路径 (一般只有当你在一个域名下部署多个项目时才会用到此值。) */ public String getPath() { return path; } /** - * @param path 路径 + * @param path 路径 (一般只有当你在一个域名下部署多个项目时才会用到此值。) * @return 对象自身 */ public SaCookieConfig setPath(String path) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaSignConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaSignConfig.java index 90ca38d2..16cbffbf 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaSignConfig.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaSignConfig.java @@ -15,6 +15,9 @@ public class SaSignConfig { /** * 接口调用时的时间戳允许的差距(单位:ms),-1代表不校验差距,默认15分钟 + * + *

比如此处你配置了60秒,当一个请求从 client 发起后,如果 server 端60秒内没有处理,60秒后再想处理就无法校验通过了。

+ *

timestamp + nonce 有效防止重放攻击。

*/ private long timestampDisparity = 1000 * 60 * 15; @@ -47,6 +50,9 @@ public class SaSignConfig { /** * 获取 接口调用时的时间戳允许的差距(单位:ms),-1代表不校验差距,默认15分钟 * + *

比如此处你配置了60秒,当一个请求从 client 发起后,如果 server 端60秒内没有处理,60秒后再想处理就无法校验通过了。

+ *

timestamp + nonce 有效防止重放攻击。

+ * * @return / */ public long getTimestampDisparity() { @@ -56,6 +62,9 @@ public class SaSignConfig { /** * 设置 接口调用时的时间戳允许的差距(单位:ms),-1代表不校验差距,默认15分钟 * + *

比如此处你配置了60秒,当一个请求从 client 发起后,如果 server 端60秒内没有处理,60秒后再想处理就无法校验通过了。

+ *

timestamp + nonce 有效防止重放攻击。

+ * * @param timestampDisparity / * @return 对象自身 */ diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java index 5e82d7c4..c1a42b7d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java @@ -5,95 +5,132 @@ import cn.dev33.satoken.util.SaFoxUtil; import java.io.Serializable; /** - * Sa-Token 配置类 Model - *

- * 你可以通过yml、properties、java代码等形式配置本类参数,具体请查阅官方文档: https://sa-token.cc/ - * - * @author kong + * Sa-Token 配置类 Model * + *

你可以通过yml、properties、java代码等形式配置本类参数,具体请查阅官方文档: https://sa-token.cc/

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenConfig implements Serializable { private static final long serialVersionUID = -6541180061782004705L; - /** token名称 (同时也是cookie名称) */ + /** token 名称 (同时也是: cookie 名称、提交 token 时参数的名称、存储 token 时的 key 前缀) */ private String tokenName = "satoken"; - /** token的长久有效期(单位:秒) 默认30天, -1代表永久 */ + /** token 的长久有效期(单位:秒) 默认30天, -1代表永久 */ private long timeout = 60 * 60 * 24 * 30; /** - * token临时有效期 [指定时间内无操作就视为token过期] (单位: 秒), 默认-1 代表不限制 - * (例如可以设置为1800代表30分钟内无操作就过期) + * token 临时有效期 [ 指定时间内无操作就视为 token 过期 ] (单位: 秒), 默认-1 代表不限制 + * (例如可以设置为 1800 代表 30 分钟内无操作就过期) */ private long activityTimeout = -1; - /** 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) */ + /** + * 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + */ private Boolean isConcurrent = true; - /** 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) */ + /** + * 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + */ private Boolean isShare = true; /** - * 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置才有效) + * 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置项才有意义) */ private int maxLoginCount = 12; - /** 在每次创建 token 时的最高循环次数,用于保证 token 唯一性(-1=不循环尝试,直接使用) */ + /** + * 在每次创建 token 时的最高循环次数,用于保证 token 唯一性(-1=不循环尝试,直接使用) + */ private int maxTryTimes = 12; - /** 是否尝试从请求体里读取token */ + /** + * 是否尝试从请求体里读取 token + */ private Boolean isReadBody = true; - - /** 是否尝试从header里读取token */ + /** + * 是否尝试从 header 里读取 token + */ private Boolean isReadHeader = true; - /** 是否尝试从cookie里读取token */ + /** + * 是否尝试从 cookie 里读取 token + */ private Boolean isReadCookie = true; - /** 是否在登录后将 Token 写入到响应头 */ + /** + * 是否在登录后将 token 写入到响应头 + */ private Boolean isWriteHeader = false; - - /** token风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) */ - private String tokenStyle = "uuid"; - - /** 默认dao层实现类中,每次清理过期数据间隔的时间 (单位: 秒) ,默认值30秒,设置为-1代表不启动定时清理 */ - private int dataRefreshPeriod = 30; - - /** 获取[token专属session]时是否必须登录 (如果配置为true,会在每次获取[token-session]时校验是否登录) */ - private Boolean tokenSessionCheckLogin = true; - - /** 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) */ - private Boolean autoRenew = true; - - /** token前缀, 格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) */ - private String tokenPrefix; - - /** 是否在初始化配置时打印版本字符画 */ - private Boolean isPrint = true; - - /** 是否打印操作日志 */ - private Boolean isLog = false; - - /** 日志等级(trace、debug、info、warn、error、fatal) */ - private String logLevel = "trace"; - - /** 日志等级 int 值(1=trace、2=debug、3=info、4=warn、5=error、6=fatal) */ - private int logLevelInt = 1; - /** - * jwt秘钥 (只有集成 jwt 模块时此参数才会生效) + * token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) + */ + private String tokenStyle = "uuid"; + + /** + * 默认 SaTokenDao 实现类中,每次清理过期数据间隔的时间(单位: 秒),默认值30秒,设置为-1代表不启动定时清理 + */ + private int dataRefreshPeriod = 30; + + /** + * 获取 Token-Session 时是否必须登录(如果配置为true,会在每次获取 getTokenSession() 时校验当前是否登录) + */ + private Boolean tokenSessionCheckLogin = true; + + /** + * 是否打开自动续签 activityTimeout (如果此值为 true, 框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) + */ + private Boolean autoRenew = true; + + /** + * token 前缀, 前端提交 token 时应该填写的固定前缀,格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) + */ + private String tokenPrefix; + + /** + * 是否在初始化配置时在控制台打印版本字符画 + */ + private Boolean isPrint = true; + + /** + * 是否打印操作日志 + */ + private Boolean isLog = false; + + /** + * 日志等级(trace、debug、info、warn、error、fatal),此值与 logLevelInt 联动 + */ + private String logLevel = "trace"; + + /** + * 日志等级 int 值(1=trace、2=debug、3=info、4=warn、5=error、6=fatal),此值与 logLevel 联动 + */ + private int logLevelInt = 1; + + /** + * 是否打印彩色日志 + */ + private Boolean isColorLog = null; + + /** + * jwt秘钥(只有集成 jwt 相关模块时此参数才会生效) */ private String jwtSecretKey; /** - * Http Basic 认证的账号和密码 + * Http Basic 认证的默认账号和密码 */ private String basic = ""; - /** 配置当前项目的网络访问地址 */ + /** + * 配置当前项目的网络访问地址 + */ private String currDomain; /** @@ -101,10 +138,11 @@ public class SaTokenConfig implements Serializable { */ private long sameTokenTimeout = 60 * 60 * 24; - /** 是否校验Same-Token(部分rpc插件有效) */ + /** + * 是否校验 Same-Token(部分rpc插件有效) + */ private Boolean checkSameToken = false; - /** * Cookie配置对象 */ @@ -117,14 +155,14 @@ public class SaTokenConfig implements Serializable { /** - * @return token名称 (同时也是cookie名称) + * @return token 名称 (同时也是: cookie 名称、提交 token 时参数的名称、存储 token 时的 key 前缀) */ public String getTokenName() { return tokenName; } /** - * @param tokenName token名称 (同时也是cookie名称) + * @param tokenName token 名称 (同时也是: cookie 名称、提交 token 时参数的名称、存储 token 时的 key 前缀) * @return 对象自身 */ public SaTokenConfig setTokenName(String tokenName) { @@ -133,14 +171,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return token的长久有效期(单位:秒) 默认30天, -1代表永久 + * @return token 的长久有效期(单位:秒) 默认30天, -1代表永久 */ public long getTimeout() { return timeout; } /** - * @param timeout token的长久有效期(单位:秒) 默认30天, -1代表永久 + * @param timeout token 的长久有效期(单位:秒) 默认30天, -1代表永久 * @return 对象自身 */ public SaTokenConfig setTimeout(long timeout) { @@ -149,16 +187,16 @@ public class SaTokenConfig implements Serializable { } /** - * @return token临时有效期 [指定时间内无操作就视为token过期] (单位: 秒), 默认-1 代表不限制 - * (例如可以设置为1800代表30分钟内无操作就过期) + * @return token 临时有效期 [ 指定时间内无操作就视为 token 过期 ] (单位: 秒), 默认-1 代表不限制 + * (例如可以设置为 1800 代表 30 分钟内无操作就过期) */ public long getActivityTimeout() { return activityTimeout; } /** - * @param activityTimeout token临时有效期 [指定时间内无操作就视为token过期] (单位: 秒), 默认-1 代表不限制 - * (例如可以设置为1800代表30分钟内无操作就过期) + * @param activityTimeout token 临时有效期 [ 指定时间内无操作就视为 token 过期 ] (单位: 秒), 默认-1 代表不限制 + * (例如可以设置为 1800 代表 30 分钟内无操作就过期) * @return 对象自身 */ public SaTokenConfig setActivityTimeout(long activityTimeout) { @@ -167,14 +205,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) + * @return 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) */ public Boolean getIsConcurrent() { return isConcurrent; } /** - * @param isConcurrent 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) + * @param isConcurrent 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) * @return 对象自身 */ public SaTokenConfig setIsConcurrent(Boolean isConcurrent) { @@ -183,14 +221,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + * @return 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个token, 为 false 时每次登录新建一个 token) */ public Boolean getIsShare() { return isShare; } /** - * @param isShare 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + * @param isShare 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个token, 为 false 时每次登录新建一个 token) * @return 对象自身 */ public SaTokenConfig setIsShare(Boolean isShare) { @@ -199,14 +237,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置才有效) + * @return 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置项才有意义) */ public int getMaxLoginCount() { return maxLoginCount; } /** - * @param maxLoginCount 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置才有效) + * @param maxLoginCount 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置项才有意义) * @return 对象自身 */ public SaTokenConfig setMaxLoginCount(int maxLoginCount) { @@ -231,14 +269,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否尝试从请求体里读取token + * @return 是否尝试从请求体里读取 token */ public Boolean getIsReadBody() { return isReadBody; } /** - * @param isReadBody 是否尝试从请求体里读取token + * @param isReadBody 是否尝试从请求体里读取 token * @return 对象自身 */ public SaTokenConfig setIsReadBody(Boolean isReadBody) { @@ -247,14 +285,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否尝试从header里读取token + * @return 是否尝试从 header 里读取 token */ public Boolean getIsReadHeader() { return isReadHeader; } /** - * @param isReadHeader 是否尝试从header里读取token + * @param isReadHeader 是否尝试从 header 里读取 token * @return 对象自身 */ public SaTokenConfig setIsReadHeader(Boolean isReadHeader) { @@ -263,14 +301,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否尝试从cookie里读取token + * @return 是否尝试从 cookie 里读取 token */ public Boolean getIsReadCookie() { return isReadCookie; } /** - * @param isReadCookie 是否尝试从cookie里读取token + * @param isReadCookie 是否尝试从 cookie 里读取 token * @return 对象自身 */ public SaTokenConfig setIsReadCookie(Boolean isReadCookie) { @@ -279,14 +317,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否在登录后将 Token 写入到响应头 + * @return 是否在登录后将 token 写入到响应头 */ public Boolean getIsWriteHeader() { return isWriteHeader; } /** - * @param isWriteHeader 是否在登录后将 Token 写入到响应头 + * @param isWriteHeader 是否在登录后将 token 写入到响应头 * @return 对象自身 */ public SaTokenConfig setIsWriteHeader(Boolean isWriteHeader) { @@ -295,14 +333,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return token风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) + * @return token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) */ public String getTokenStyle() { return tokenStyle; } /** - * @param tokenStyle token风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) + * @param tokenStyle token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) * @return 对象自身 */ public SaTokenConfig setTokenStyle(String tokenStyle) { @@ -311,15 +349,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 默认dao层实现类中,每次清理过期数据间隔的时间 (单位: 秒) ,默认值30秒,设置为-1代表不启动定时清理 + * @return 默认 SaTokenDao 实现类中,每次清理过期数据间隔的时间(单位: 秒),默认值30秒,设置为-1代表不启动定时清理 */ public int getDataRefreshPeriod() { return dataRefreshPeriod; } /** - * @param dataRefreshPeriod 默认dao层实现类中,每次清理过期数据间隔的时间 (单位: 秒) - * ,默认值30秒,设置为-1代表不启动定时清理 + * @param dataRefreshPeriod 默认 SaTokenDao 实现类中,每次清理过期数据间隔的时间(单位: 秒),默认值30秒,设置为-1代表不启动定时清理 * @return 对象自身 */ public SaTokenConfig setDataRefreshPeriod(int dataRefreshPeriod) { @@ -328,15 +365,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 获取[token专属session]时是否必须登录 (如果配置为true,会在每次获取[token-session]时校验是否登录) + * @return 获取 Token-Session 时是否必须登录(如果配置为true,会在每次获取 getTokenSession() 时校验当前是否登录) */ public Boolean getTokenSessionCheckLogin() { return tokenSessionCheckLogin; } /** - * @param tokenSessionCheckLogin 获取[token专属session]时是否必须登录 - * (如果配置为true,会在每次获取[token-session]时校验是否登录) + * @param tokenSessionCheckLogin 获取 Token-Session 时是否必须登录(如果配置为true,会在每次获取 getTokenSession() 时校验当前是否登录) * @return 对象自身 */ public SaTokenConfig setTokenSessionCheckLogin(Boolean tokenSessionCheckLogin) { @@ -345,14 +381,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否打开了自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) + * @return 是否打开自动续签 activityTimeout (如果此值为 true, 框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) */ public Boolean getAutoRenew() { return autoRenew; } /** - * @param autoRenew 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) + * @param autoRenew 是否打开自动续签 activityTimeout (如果此值为 true, 框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) * @return 对象自身 */ public SaTokenConfig setAutoRenew(Boolean autoRenew) { @@ -361,14 +397,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return token前缀, 格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) + * @return token 前缀, 前端提交 token 时应该填写的固定前缀,格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) */ public String getTokenPrefix() { return tokenPrefix; } /** - * @param tokenPrefix token前缀, 格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) + * @param tokenPrefix token 前缀, 前端提交 token 时应该填写的固定前缀,格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) * @return 对象自身 */ public SaTokenConfig setTokenPrefix(String tokenPrefix) { @@ -377,14 +413,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 是否在初始化配置时打印版本字符画 + * @return 是否在初始化配置时在控制台打印版本字符画 */ public Boolean getIsPrint() { return isPrint; } /** - * @param isPrint 是否在初始化配置时打印版本字符画 + * @param isPrint 是否在初始化配置时在控制台打印版本字符画 * @return 对象自身 */ public SaTokenConfig setIsPrint(Boolean isPrint) { @@ -409,14 +445,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 日志等级(trace、debug、info、warn、error、fatal) + * @return 日志等级(trace、debug、info、warn、error、fatal),此值与 logLevelInt 联动 */ public String getLogLevel() { return logLevel; } /** - * @param logLevel 日志等级(trace、debug、info、warn、error、fatal) + * @param logLevel 日志等级(trace、debug、info、warn、error、fatal),此值与 logLevelInt 联动 * @return 对象自身 */ public SaTokenConfig setLogLevel(String logLevel) { @@ -426,14 +462,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return 日志等级 int 值(1=trace、2=debug、3=info、4=warn、5=error、6=fatal) + * @return 日志等级 int 值(1=trace、2=debug、3=info、4=warn、5=error、6=fatal),此值与 logLevel 联动 */ public int getLogLevelInt() { return logLevelInt; } /** - * @param logLevelInt 日志等级 int 值(1=trace、2=debug、3=info、4=warn、5=error、6=fatal) + * @param logLevelInt 日志等级 int 值(1=trace、2=debug、3=info、4=warn、5=error、6=fatal),此值与 logLevel 联动 * @return 对象自身 */ public SaTokenConfig setLogLevelInt(int logLevelInt) { @@ -441,16 +477,36 @@ public class SaTokenConfig implements Serializable { this.logLevel = SaFoxUtil.translateLogLevelToString(logLevelInt); return this; } - + /** - * @return jwt秘钥 (只有集成 jwt 模块时此参数才会生效) + * 获取:是否打印彩色日志 + * + * @return isColorLog 是否打印彩色日志 + */ + public Boolean getIsColorLog() { + return this.isColorLog; + } + + /** + * 设置:是否打印彩色日志 + * + * @param isColorLog 是否打印彩色日志 + * @return 对象自身 + */ + public SaTokenConfig setIsColorLog(Boolean isColorLog) { + this.isColorLog = isColorLog; + return this; + } + + /** + * @return jwt秘钥(只有集成 jwt 相关模块时此参数才会生效) */ public String getJwtSecretKey() { return jwtSecretKey; } /** - * @param jwtSecretKey jwt秘钥 (只有集成 jwt 模块时此参数才会生效) + * @param jwtSecretKey jwt秘钥(只有集成 jwt 相关模块时此参数才会生效) * @return 对象自身 */ public SaTokenConfig setJwtSecretKey(String jwtSecretKey) { @@ -459,14 +515,14 @@ public class SaTokenConfig implements Serializable { } /** - * @return Http Basic 认证的账号和密码 + * @return Http Basic 认证的默认账号和密码 */ public String getBasic() { return basic; } /** - * @param basic Http Basic 认证的账号和密码 + * @param basic Http Basic 认证的默认账号和密码 * @return 对象自身 */ public SaTokenConfig setBasic(String basic) { @@ -577,6 +633,7 @@ public class SaTokenConfig implements Serializable { + ", isLog=" + isLog + ", logLevel=" + logLevel + ", logLevelInt=" + logLevelInt + + ", isColorLog=" + isColorLog + ", jwtSecretKey=" + jwtSecretKey + ", basic=" + basic + ", currDomain=" + currDomain diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfigFactory.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfigFactory.java index e00644a7..ce769062 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfigFactory.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfigFactory.java @@ -13,10 +13,10 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token配置文件的构建工厂类 - *

- * 用于手动读取配置文件初始化 SaTokenConfig 对象,只有在非IOC环境下你才会用到此类 + * + *

用于手动读取配置文件初始化 SaTokenConfig 对象,只有在非IOC环境下你才会用到此类

* - * @author kong + * @author click33 * @since 2022-10-30 */ public class SaTokenConfigFactory { @@ -30,7 +30,7 @@ public class SaTokenConfigFactory { public static String configPath = "sa-token.properties"; /** - * 根据configPath路径获取配置信息 + * 根据 configPath 路径获取配置信息 * * @return 一个SaTokenConfig对象 */ @@ -42,7 +42,7 @@ public class SaTokenConfigFactory { * 根据指定路径路径获取配置信息 * * @param path 配置文件路径 - * @return 一个SaTokenConfig对象 + * @return 一个 SaTokenConfig 对象 */ public static SaTokenConfig createConfig(String path) { Map map = readPropToMap(path); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaHolder.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaHolder.java index e1accd9d..7ab61411 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaHolder.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaHolder.java @@ -7,52 +7,58 @@ import cn.dev33.satoken.context.model.SaResponse; import cn.dev33.satoken.context.model.SaStorage; /** - * Sa-Token 上下文持有类 - * @author kong + * Sa-Token 上下文持有类,你可以通过此类快速获取当前环境下的 SaRequest、SaResponse、SaStorage、SaApplication 对象。 * + * @author click33 + * @since <= 1.34.0 */ public class SaHolder { /** - * 获取当前请求的 SaTokenContext + * 获取当前请求的 SaTokenContext 上下文对象 + * @see SaTokenContext * - * @return see note + * @return / */ public static SaTokenContext getContext() { return SaManager.getSaTokenContextOrSecond(); } /** - * 获取当前请求的 [Request] 对象 + * 获取当前请求的 Request 包装对象 + * @see SaRequest * - * @return see note + * @return / */ public static SaRequest getRequest() { return SaManager.getSaTokenContextOrSecond().getRequest(); } /** - * 获取当前请求的 [Response] 对象 + * 获取当前请求的 Response 包装对象 + * @see SaResponse * - * @return see note + * @return / */ public static SaResponse getResponse() { return SaManager.getSaTokenContextOrSecond().getResponse(); } /** - * 获取当前请求的 [存储器] 对象 - * - * @return see note + * 获取当前请求的 Storage 包装对象 + * @see SaStorage + * + * @return / */ public static SaStorage getStorage() { return SaManager.getSaTokenContextOrSecond().getStorage(); } /** - * 获取全局 SaApplication 对象 + * 获取全局 SaApplication 对象 + * @see SaApplication * - * @return see note + * @return / */ public static SaApplication getApplication() { return SaApplication.defaultInstance; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContext.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContext.java index c1edfae0..e9d45c35 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContext.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContext.java @@ -6,43 +6,56 @@ import cn.dev33.satoken.context.model.SaResponse; /** * Sa-Token 上下文处理器 - * @author kong * + *

上下文处理器封装了当前应用环境的底层操作,是 Sa-Token 对接不同 web 框架的关键,详细可参考在线文档 “自定义 SaTokenContext 指南”章节

+ * + * @author click33 + * @since <= 1.34.0 */ public interface SaTokenContext { /** - * 获取当前请求的 [Request] 对象 + * 获取当前请求的 Request 包装对象 + * @see SaRequest * - * @return see note + * @return / */ public SaRequest getRequest(); /** - * 获取当前请求的 [Response] 对象 + * 获取当前请求的 Response 包装对象 + * @see SaResponse * - * @return see note + * @return / */ public SaResponse getResponse(); /** - * 获取当前请求的 [存储器] 对象 + * 获取当前请求的 Storage 包装对象 + * @see SaStorage * - * @return see note + * @return / */ public SaStorage getStorage(); /** - * 校验指定路由匹配符是否可以匹配成功指定路径 + * 判断:指定路由匹配符是否可以匹配成功指定路径 + *
+	 *     判断规则由底层 web 框架决定,例如在 springboot 中:
+	 *     	- matchPath("/user/*", "/user/login")  返回: true
+	 *     	- matchPath("/user/*", "/article/edit")  返回: false
+	 * 
* * @param pattern 路由匹配符 * @param path 需要匹配的路径 - * @return see note + * @return / */ public boolean matchPath(String pattern, String path); /** - * 此上下文是否有效 + * 判断:在本次请求中,此上下文是否可用。 + *

例如在部分 rpc 调用时, 一级上下文会返回 false,这时候框架就会选择使用二级上下文来处理请求

+ * * @return / */ public default boolean isValid() { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java index 30599097..d2c9e0c0 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java @@ -7,15 +7,15 @@ import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.exception.InvalidContextException; /** - * Sa-Token 上下文处理器 [默认实现类] + * Sa-Token 上下文处理器 [ 默认实现类 ] * *

- * 一般情况下框架会为你自动注入合适的上下文处理器,如果代码断点走到了此默认实现类, - * 说明你引入的依赖有问题或者错误的调用了Sa-Token的API, 请在[在线开发文档 → 附录 → 常见问题排查] 中按照提示进行排查 + * 一般情况下框架会为你自动注入合适的上下文处理器,如果代码断点走到了此默认实现类, + * 说明你引入的依赖有问题或者错误的调用了 Sa-Token 的API, 请在 [ 在线开发文档 → 附录 → 常见问题排查 ] 中按照提示进行排查 *

* - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenContextDefaultImpl implements SaTokenContext { @@ -25,37 +25,25 @@ public class SaTokenContextDefaultImpl implements SaTokenContext { public static SaTokenContextDefaultImpl defaultContext = new SaTokenContextDefaultImpl(); /** - * 默认的错误提示语 + * 错误提示语 */ public static final String ERROR_MESSAGE = "未能获取有效的上下文处理器"; - - /** - * 获取当前请求的 [Request] 对象 - */ + @Override public SaRequest getRequest() { throw new InvalidContextException(ERROR_MESSAGE).setCode(SaErrorCode.CODE_10001); } - - /** - * 获取当前请求的 [Response] 对象 - */ + @Override public SaResponse getResponse() { throw new InvalidContextException(ERROR_MESSAGE).setCode(SaErrorCode.CODE_10001); } - /** - * 获取当前请求的 [存储器] 对象 - */ @Override public SaStorage getStorage() { throw new InvalidContextException(ERROR_MESSAGE).setCode(SaErrorCode.CODE_10001); } - - /** - * 校验指定路由匹配符是否可以匹配成功指定路径 - */ + @Override public boolean matchPath(String pattern, String path) { throw new InvalidContextException(ERROR_MESSAGE).setCode(SaErrorCode.CODE_10001); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocal.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocal.java index e2c637f8..97d82359 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocal.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocal.java @@ -5,15 +5,17 @@ import cn.dev33.satoken.context.model.SaResponse; import cn.dev33.satoken.context.model.SaStorage; /** - * Sa-Token 上下文处理器 [ThreadLocal版本] + * Sa-Token 上下文处理器 [ ThreadLocal 版本 ] * *

- * 使用 [ThreadLocal版本] 上下文处理器需要在全局过滤器或者拦截器内率先调用 - * SaTokenContextForThreadLocalStorage.setBox(req,res, sto) 初始化上下文 + * 使用 [ ThreadLocal 版本 ] 上下文处理器需要在全局过滤器或者拦截器内率先调用 + * SaTokenContextForThreadLocalStorage.setBox(req, res, sto) 初始化上下文 *

- * - * @author kong * + *

一般情况下你不需要直接操作此类,因为框架的 starter 集成包里已经封装了完整的上下文操作

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenContextForThreadLocal implements SaTokenContext { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocalStorage.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocalStorage.java index d2af1f52..a9e4ae89 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocalStorage.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextForThreadLocalStorage.java @@ -7,20 +7,22 @@ import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.exception.InvalidContextException; /** - * Sa-Token 上下文处理器 [ThreadLocal版本] ---- 对象存储器 - * - * @author kong + * Sa-Token 上下文处理器 [ThreadLocal 版本] ---- 对象存储器 * + *

一般情况下你不需要直接操作此类,因为框架的 starter 集成包里已经封装了完整的上下文操作

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenContextForThreadLocalStorage { /** - * 基于 ThreadLocal 的 [Box存储器] + * 基于 ThreadLocal 的 [ Box 存储器 ] */ public static ThreadLocal boxThreadLocal = new InheritableThreadLocal(); /** - * 初始化 [Box存储器] + * 初始化当前线程的 [ Box 存储器 ] * @param request {@link SaRequest} * @param response {@link SaResponse} * @param storage {@link SaStorage} @@ -31,23 +33,23 @@ public class SaTokenContextForThreadLocalStorage { }; /** - * 清除 [Box存储器] + * 清除当前线程的 [ Box 存储器 ] */ public static void clearBox() { boxThreadLocal.remove(); }; /** - * 获取 [Box存储器] - * @return see note + * 获取当前线程的 [ Box 存储器 ] + * @return / */ public static Box getBox() { return boxThreadLocal.get(); }; /** - * 获取 [Box存储器], 如果为空则抛出异常 - * @return see note + * 获取当前线程的 [ Box 存储器 ], 如果为空则抛出异常 + * @return / */ public static Box getBoxNotNull() { Box box = boxThreadLocal.get(); @@ -58,27 +60,27 @@ public class SaTokenContextForThreadLocalStorage { }; /** - * 在 [Box存储器] 获取 [Request] 对象 + * 在当前线程的 SaRequest 包装对象 * - * @return see note + * @return / */ public static SaRequest getRequest() { return getBoxNotNull().getRequest(); } /** - * 在 [Box存储器] 获取 [Response] 对象 + * 在当前线程的 SaResponse 包装对象 * - * @return see note + * @return / */ public static SaResponse getResponse() { return getBoxNotNull().getResponse(); } /** - * 在 [Box存储器] 获取 [存储器] 对象 + * 在当前线程的 SaStorage 存储器包装对象 * - * @return see note + * @return / */ public static SaStorage getStorage() { return getBoxNotNull().getStorage(); @@ -86,11 +88,13 @@ public class SaTokenContextForThreadLocalStorage { /** - * 临时内部类,用于存储[request、response、storage]三个对象 - * @author kong + * Box 临时内部类,用于存储 [ SaRequest、SaResponse、SaStorage ] 三个包装对象 + * + * @author click33 + * @since <= 1.34.0 */ /** - * @author kong + * @author click33 * */ public static class Box { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java index 23cb072c..4c2fe6fa 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java @@ -10,9 +10,10 @@ import cn.dev33.satoken.exception.SaTokenException; import cn.dev33.satoken.util.SaFoxUtil; /** - * Cookie Model - * @author kong + * Cookie Model,代表一个 Cookie 应该具有的所有参数 * + * @author click33 + * @since <= 1.34.0 */ public class SaCookie { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaRequest.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaRequest.java index 8dfb402e..697870bf 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaRequest.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaRequest.java @@ -8,27 +8,28 @@ import java.util.List; import java.util.Map; /** - * Request 包装类 - * @author kong + * Request 请求对象 包装类 * + * @author click33 + * @since <= 1.34.0 */ public interface SaRequest { /** - * 获取底层源对象 - * @return see note + * 获取底层被包装的源对象 + * @return / */ public Object getSource(); /** - * 在 [请求体] 里获取一个值 + * 在 [ 请求体 ] 里获取一个参数值 * @param name 键 * @return 值 */ public String getParam(String name); /** - * 在 [请求体] 里获取一个值,值为空时返回默认值 + * 在 [ 请求体 ] 里获取一个参数值,值为空时返回默认值 * @param name 键 * @param defaultValue 值为空时的默认值 * @return 值 @@ -42,7 +43,7 @@ public interface SaRequest { } /** - * 检测提供的参数是否为指定值 + * 在 [ 请求体 ] 里检测提供的参数是否为指定值 * @param name 键 * @param value 值 * @return 是否相等 @@ -53,7 +54,7 @@ public interface SaRequest { } /** - * 检测请求是否提供了指定参数 + * 在 [ 请求体 ] 里检测请求是否提供了指定参数 * @param name 参数名称 * @return 是否提供 */ @@ -62,7 +63,7 @@ public interface SaRequest { } /** - * 在 [请求体] 里获取一个值 (此值必须存在,否则抛出异常 ) + * 在 [ 请求体 ] 里获取一个值 (此值必须存在,否则抛出异常 ) * @param name 键 * @return 参数值 */ @@ -75,26 +76,26 @@ public interface SaRequest { } /** - * 获取 [请求体] 里提交的所有参数名称 + * 获取 [ 请求体 ] 里提交的所有参数名称 * @return 参数名称列表 */ public List getParamNames(); /** - * 获取 [请求体] 里提交的所有参数 + * 获取 [ 请求体 ] 里提交的所有参数 * @return 参数列表 */ public Map getParamMap(); /** - * 在 [请求头] 里获取一个值 + * 在 [ 请求头 ] 里获取一个值 * @param name 键 * @return 值 */ public String getHeader(String name); /** - * 在 [请求头] 里获取一个值 + * 在 [ 请求头 ] 里获取一个值 * @param name 键 * @param defaultValue 值为空时的默认值 * @return 值 @@ -108,7 +109,7 @@ public interface SaRequest { } /** - * 在 [Cookie作用域] 里获取一个值 + * 在 [ Cookie作用域 ] 里获取一个值 * @param name 键 * @return 值 */ @@ -116,14 +117,14 @@ public interface SaRequest { /** * 返回当前请求path (不包括上下文名称) - * @return see note + * @return / */ public String getRequestPath(); /** - * 返回当前请求path是否为指定值 + * 返回当前请求 path 是否为指定值 * @param path path - * @return see note + * @return / */ public default boolean isPath(String path) { return getRequestPath().equals(path); @@ -131,19 +132,19 @@ public interface SaRequest { /** * 返回当前请求的url,不带query参数,例:http://xxx.com/test - * @return see note + * @return / */ public String getUrl(); /** * 返回当前请求的类型 - * @return see note + * @return / */ public String getMethod(); /** - * 此请求是否为Ajax请求 - * @return see note + * 判断此请求是否为 Ajax 异步请求 + * @return / */ public default boolean isAjax() { return getHeader("X-Requested-With") != null; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaResponse.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaResponse.java index 78c11be0..e643219d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaResponse.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaResponse.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.context.model; /** - * Response 包装类 - * @author kong + * Response 响应对象 包装类 * + * @author click33 + * @since <= 1.34.0 */ public interface SaResponse { @@ -13,8 +14,8 @@ public interface SaResponse { public static final String ACCESS_CONTROL_EXPOSE_HEADERS = "Access-Control-Expose-Headers"; /** - * 获取底层源对象 - * @return see note + * 获取底层被包装的源对象 + * @return / */ public Object getSource(); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaStorage.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaStorage.java index b64aa2f3..51157cc1 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaStorage.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaStorage.java @@ -3,17 +3,18 @@ package cn.dev33.satoken.context.model; import cn.dev33.satoken.application.SaSetValueInterface; /** - * Storage Model,请求作用域的读取值对象 - *

在一次请求范围内: 存值、取值 - * - * @author kong + * Storage Model,请求作用域的读取值对象。 * + *

在一次请求范围内: 存值、取值。数据在请求结束后失效。 + * + * @author click33 + * @since <= 1.34.0 */ public interface SaStorage extends SaSetValueInterface { /** - * 获取底层源对象 - * @return see note + * 获取底层被包装的源对象 + * @return / */ public Object getSource(); @@ -26,7 +27,7 @@ public interface SaStorage extends SaSetValueInterface { /** 写值 */ @Override public SaStorage set(String key, Object value); - + /** 删值 */ @Override public SaStorage delete(String key); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/package-info.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/package-info.java index 435ca3a7..80d550a6 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/package-info.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/package-info.java @@ -1,4 +1,5 @@ /** - * 因为不能确定最终运行的容器属于标准Servlet模型还是非Servlet模型,特封装此包下的包装类进行对接 + * 因为不能确定最终运行的 web 容器属于标准 Servlet 模型还是非 Servlet 模型,特封装此包下的包装类进行对接。 + * 调用路径为:Sa-Token 功能函数 -> SaRequest 封装接口 -> SaRequest 具体实现类。 */ package cn.dev33.satoken.context.model; \ No newline at end of file diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContext.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContext.java index f1047e1b..2df81d07 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContext.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContext.java @@ -5,10 +5,12 @@ import cn.dev33.satoken.context.SaTokenContext; /** * Sa-Token 二级Context - 基础接口 * - *

(利用继承机制实现区别 [一级Context] 与 [二级Context] 的目的) - * - * @author kong + *

(利用继承机制实现区别 [ 一级Context ] 与 [ 二级Context ] 的目的) * + * @see SaTokenContext SaTokenContext 上下文处理器 + * + * @author click33 + * @since <= 1.34.0 */ public interface SaTokenSecondContext extends SaTokenContext { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContextCreator.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContextCreator.java index 005afaf3..cb5b065f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContextCreator.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/second/SaTokenSecondContextCreator.java @@ -3,14 +3,14 @@ package cn.dev33.satoken.context.second; /** * Sa-Token 二级Context - 创建器 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ @FunctionalInterface public interface SaTokenSecondContextCreator { /** - * 创建一个二级 Context + * 创建一个二级 Context 处理器 * @return / */ public SaTokenSecondContext create(); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java index bc4264a8..3f369b81 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java @@ -1,163 +1,172 @@ package cn.dev33.satoken.dao; -import java.util.List; - import cn.dev33.satoken.session.SaSession; +import java.util.List; + /** - * Sa-Token持久层接口 - * @author kong + * Sa-Token 持久层接口 + * + *

+ * 此接口的不同实现类可将数据存储至不同位置,如:内存Map、Redis 等等。 + * 如果你要自定义数据存储策略,也需通过实现此接口来完成。 + *

+ * + * @author click33 + * @since <= 1.34.0 */ public interface SaTokenDao { - /** 常量,表示一个key永不过期 (在一个key被标注为永远不过期时返回此值) */ - public static final long NEVER_EXPIRE = -1; + /** 常量,表示一个 key 永不过期 (在一个 key 被标注为永远不过期时返回此值) */ + long NEVER_EXPIRE = -1; - /** 常量,表示系统中不存在这个缓存 (在对不存在的key获取剩余存活时间时返回此值) */ - public static final long NOT_VALUE_EXPIRE = -2; + /** 常量,表示系统中不存在这个缓存(在对不存在的 key 获取剩余存活时间时返回此值) */ + long NOT_VALUE_EXPIRE = -2; // --------------------- 字符串读写 --------------------- /** - * 获取Value,如无返空 + * 获取 value,如无返空 + * * @param key 键名称 * @return value */ - public String get(String key); + String get(String key); /** - * 写入Value,并设定存活时间 (单位: 秒) + * 写入 value,并设定存活时间(单位: 秒) + * * @param key 键名称 * @param value 值 - * @param timeout 过期时间(值大于0时限时存储,值=-1时永久存储,值=0或小于-2时不存储) + * @param timeout 数据有效期(值大于0时限时存储,值=-1时永久存储,值=0或小于-2时不存储) */ - public void set(String key, String value, long timeout); + void set(String key, String value, long timeout); /** - * 更新Value (过期时间不变) + * 更新 value (过期时间不变) * @param key 键名称 * @param value 值 */ - public void update(String key, String value); + void update(String key, String value); /** - * 删除Value + * 删除 value * @param key 键名称 */ - public void delete(String key); + void delete(String key); /** - * 获取Value的剩余存活时间 (单位: 秒) - * @param key 指定key - * @return 这个key的剩余存活时间 + * 获取 value 的剩余存活时间(单位: 秒) + * @param key 指定 key + * @return 这个 key 的剩余存活时间 */ - public long getTimeout(String key); + long getTimeout(String key); /** - * 修改Value的剩余存活时间 (单位: 秒) - * @param key 指定key - * @param timeout 过期时间 + * 修改 value 的剩余存活时间(单位: 秒) + * @param key 指定 key + * @param timeout 过期时间(单位: 秒) */ - public void updateTimeout(String key, long timeout); + void updateTimeout(String key, long timeout); // --------------------- 对象读写 --------------------- /** - * 获取Object,如无返空 + * 获取 Object,如无返空 * @param key 键名称 * @return object */ - public Object getObject(String key); + Object getObject(String key); /** - * 写入Object,并设定存活时间 (单位: 秒) + * 写入 Object,并设定存活时间 (单位: 秒) * @param key 键名称 * @param object 值 - * @param timeout 存活时间 (值大于0时限时存储,值=-1时永久存储,值=0或小于-2时不存储) + * @param timeout 存活时间(值大于0时限时存储,值=-1时永久存储,值=0或小于-2时不存储) */ - public void setObject(String key, Object object, long timeout); + void setObject(String key, Object object, long timeout); /** - * 更新Object (过期时间不变) + * 更新 Object (过期时间不变) * @param key 键名称 * @param object 值 */ - public void updateObject(String key, Object object); + void updateObject(String key, Object object); /** - * 删除Object + * 删除 Object * @param key 键名称 */ - public void deleteObject(String key); + void deleteObject(String key); /** - * 获取Object的剩余存活时间 (单位: 秒) - * @param key 指定key - * @return 这个key的剩余存活时间 + * 获取 Object 的剩余存活时间 (单位: 秒) + * @param key 指定 key + * @return 这个 key 的剩余存活时间 */ - public long getObjectTimeout(String key); + long getObjectTimeout(String key); /** - * 修改Object的剩余存活时间 (单位: 秒) - * @param key 指定key - * @param timeout 过期时间 + * 修改 Object 的剩余存活时间(单位: 秒) + * @param key 指定 key + * @param timeout 剩余存活时间 */ - public void updateObjectTimeout(String key, long timeout); + void updateObjectTimeout(String key, long timeout); - // --------------------- Session读写 --------------------- + // --------------------- SaSession 读写 (默认复用 Object 读写方法) --------------------- /** - * 获取Session,如无返空 + * 获取 SaSession,如无返空 * @param sessionId sessionId * @return SaSession */ - public default SaSession getSession(String sessionId) { + default SaSession getSession(String sessionId) { return (SaSession)getObject(sessionId); } /** - * 写入Session,并设定存活时间 (单位: 秒) - * @param session 要保存的Session对象 - * @param timeout 过期时间 (单位: 秒) + * 写入 SaSession,并设定存活时间(单位: 秒) + * @param session 要保存的 SaSession 对象 + * @param timeout 过期时间(单位: 秒) */ - public default void setSession(SaSession session, long timeout) { + default void setSession(SaSession session, long timeout) { setObject(session.getId(), session, timeout); } /** - * 更新Session - * @param session 要更新的session对象 + * 更新 SaSession + * @param session 要更新的 SaSession 对象 */ - public default void updateSession(SaSession session) { + default void updateSession(SaSession session) { updateObject(session.getId(), session); } /** - * 删除Session + * 删除 SaSession * @param sessionId sessionId */ - public default void deleteSession(String sessionId) { + default void deleteSession(String sessionId) { deleteObject(sessionId); } /** - * 获取Session剩余存活时间 (单位: 秒) - * @param sessionId 指定Session - * @return 这个Session的剩余存活时间 + * 获取 SaSession 剩余存活时间(单位: 秒) + * @param sessionId 指定 SaSession + * @return 这个 SaSession 的剩余存活时间 */ - public default long getSessionTimeout(String sessionId) { + default long getSessionTimeout(String sessionId) { return getObjectTimeout(sessionId); } /** - * 修改Session剩余存活时间 (单位: 秒) - * @param sessionId 指定Session - * @param timeout 过期时间 + * 修改 SaSession 剩余存活时间(单位: 秒) + * @param sessionId 指定 SaSession + * @param timeout 剩余存活时间 */ - public default void updateSessionTimeout(String sessionId, long timeout) { + default void updateSessionTimeout(String sessionId, long timeout) { updateObjectTimeout(sessionId, timeout); } @@ -169,12 +178,12 @@ public interface SaTokenDao { * @param prefix 前缀 * @param keyword 关键字 * @param start 开始处索引 - * @param size 获取数量 (-1代表从start处一直取到末尾) + * @param size 获取数量 (-1代表从 start 处一直取到末尾) * @param sortType 排序类型(true=正序,false=反序) * * @return 查询到的数据集合 */ - public List searchData(String prefix, String keyword, int start, int size, boolean sortType); + List searchData(String prefix, String keyword, int start, int size, boolean sortType); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java index 2fff7026..cbc339a7 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefaultImpl.java @@ -1,32 +1,32 @@ package cn.dev33.satoken.dao; +import cn.dev33.satoken.SaManager; +import cn.dev33.satoken.util.SaFoxUtil; + import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import cn.dev33.satoken.SaManager; -import cn.dev33.satoken.util.SaFoxUtil; - /** - * Sa-Token持久层接口 [默认实现类, 基于内存Map] - * @author kong + * Sa-Token 持久层接口,默认实现类(基于内存 Map,系统重启后数据丢失) * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenDaoDefaultImpl implements SaTokenDao { - /** - * 数据集合 + * 存储数据的集合 */ - public Map dataMap = new ConcurrentHashMap(); + public Map dataMap = new ConcurrentHashMap<>(); /** - * 过期时间集合 (单位: 毫秒) , 记录所有key的到期时间 [注意不是剩余存活时间] + * 存储数据过期时间的集合(单位: 毫秒), 记录所有 key 的到期时间 (注意存储的是到期时间,不是剩余存活时间) */ - public Map expireMap = new ConcurrentHashMap(); - + public Map expireMap = new ConcurrentHashMap<>(); + /** * 构造函数 */ @@ -121,17 +121,30 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { // ------------------------ Session 读写操作 // 使用接口默认实现 - - // ------------------------ 过期时间相关操作 + + // --------- 会话管理 + + @Override + public List searchData(String prefix, String keyword, int start, int size, boolean sortType) { + return SaFoxUtil.searchList(expireMap.keySet(), prefix, keyword, start, size, sortType); + } + + + // ------------------------ 以下是一个定时缓存的简单实现,采用:惰性检查 + 异步循环扫描 + + // --------- 过期时间相关操作 /** - * 如果指定key已经过期,则立即清除它 - * @param key 指定key + * 如果指定的 key 已经过期,则立即清除它 + * @param key 指定 key */ void clearKeyByTimeout(String key) { Long expirationTime = expireMap.get(key); - // 清除条件:如果不为空 && 不是[永不过期] && 已经超过过期时间 + // 清除条件: + // 1、数据存在。 + // 2、不是 [ 永不过期 ]。 + // 3、已经超过过期时间。 if(expirationTime != null && expirationTime != SaTokenDao.NEVER_EXPIRE && expirationTime < System.currentTimeMillis()) { dataMap.remove(key); expireMap.remove(key); @@ -139,23 +152,32 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { } /** - * 获取指定key的剩余存活时间 (单位:秒) + * 获取指定 key 的剩余存活时间 (单位:秒) + * @param key 指定 key + * @return 这个 key 的剩余存活时间 */ long getKeyTimeout(String key) { - // 先检查是否已经过期 + // 由于数据过期检测属于惰性扫描,很可能此时这个 key 已经是过期状态了,所以这里需要先检查一下 clearKeyByTimeout(key); - // 获取过期时间 + + // 获取这个 key 的过期时间 Long expire = expireMap.get(key); - // 如果根本没有这个值 + + // 如果 expire 数据不存在,说明框架没有存储这个 key,此时返回 NOT_VALUE_EXPIRE if(expire == null) { return SaTokenDao.NOT_VALUE_EXPIRE; } - // 如果被标注为永不过期 + + // 如果 expire 被标注为永不过期,则返回 NEVER_EXPIRE if(expire == SaTokenDao.NEVER_EXPIRE) { return SaTokenDao.NEVER_EXPIRE; } - // ---- 计算剩余时间并返回 + + // ---- 代码至此,说明这个 key 是有过期时间的,且未过期,那么: + + // 计算剩余时间并返回 (过期时间戳 - 当前时间戳) / 1000 转秒 long timeout = (expire - System.currentTimeMillis()) / 1000; + // 小于零时,视为不存在 if(timeout < 0) { dataMap.remove(key); @@ -164,12 +186,11 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { } return timeout; } - - - // --------------------- 定时清理过期数据 + + // --------- 定时清理过期数据 /** - * 执行数据清理的线程 + * 执行数据清理的线程引用 */ public Thread refreshThread; @@ -177,10 +198,9 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { * 是否继续执行数据清理的线程标记 */ public volatile boolean refreshFlag; - /** - * 清理所有已经过期的key + * 清理所有已经过期的 key */ public void refreshDataMap() { Iterator keys = expireMap.keySet().iterator(); @@ -190,14 +210,15 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { } /** - * 初始化定时任务 + * 初始化定时任务,定时清理过期数据 */ public void initRefreshThread() { - // 如果配置了<=0的值,则不启动定时清理 + // 如果开发者配置了 <=0 的值,则不启动定时清理 if(SaManager.getConfig().getDataRefreshPeriod() <= 0) { return; } + // 启动定时刷新 this.refreshFlag = true; this.refreshThread = new Thread(() -> { @@ -228,27 +249,10 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao { } /** - * 结束定时任务 + * 结束定时任务,不再定时清理过期数据 */ public void endRefreshThread() { this.refreshFlag = false; } - - - - // --------------------- 会话管理 - - @Override - public List searchData(String prefix, String keyword, int start, int size, boolean sortType) { - return SaFoxUtil.searchList(expireMap.keySet(), prefix, keyword, start, size, sortType); - } - - - - - - - - } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/error/SaErrorCode.java b/sa-token-core/src/main/java/cn/dev33/satoken/error/SaErrorCode.java index d1d1831c..30031ed3 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/error/SaErrorCode.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/error/SaErrorCode.java @@ -3,167 +3,166 @@ package cn.dev33.satoken.error; /** * 定义所有异常细分状态码 * - * @author kong - * @since: 2022-10-30 + * @author click33 + * @since 2022-10-30 */ public interface SaErrorCode { /** 代表这个异常在抛出时未指定异常细分状态码 */ - public static final int CODE_UNDEFINED = -1; + int CODE_UNDEFINED = -1; // ------------ /** 未能获取有效的上下文处理器 */ - public static final int CODE_10001 = 10001; + int CODE_10001 = 10001; /** 未能获取有效的上下文 */ - public static final int CODE_10002 = 10002; + int CODE_10002 = 10002; /** JSON 转换器未实现 */ - public static final int CODE_10003 = 10003; + int CODE_10003 = 10003; /** 未能从全局 StpLogic 集合中找到对应 type 的 StpLogic */ - public static final int CODE_10011 = 10011; + int CODE_10011 = 10011; /** 指定的配置文件加载失败 */ - public static final int CODE_10021 = 10021; + int CODE_10021 = 10021; /** 配置文件属性无法正常读取 */ - public static final int CODE_10022 = 10022; + int CODE_10022 = 10022; /** 重置的侦听器集合不可以为空 */ - public static final int CODE_10031 = 10031; + int CODE_10031 = 10031; /** 注册的侦听器不可以为空 */ - public static final int CODE_10032 = 10032; + int CODE_10032 = 10032; // 1030x core模块 /** 提供的 Same-Token 是无效的 */ - public static final int CODE_10301 = 10301; + int CODE_10301 = 10301; /** 表示未能通过 Http Basic 认证校验 */ - public static final int CODE_10311 = 10311; + int CODE_10311 = 10311; /** 提供的 HttpMethod 是无效的 */ - public static final int CODE_10321 = 10321; + int CODE_10321 = 10321; // 1100x StpLogic /** 未能读取到有效Token */ - public static final int CODE_11001 = 11001; + int CODE_11001 = 11001; /** 登录时的账号id值为空 */ - public static final int CODE_11002 = 11002; + int CODE_11002 = 11002; /** 更改 Token 指向的 账号Id 时,账号Id值为空 */ - public static final int CODE_11003 = 11003; + int CODE_11003 = 11003; /** 未能读取到有效Token */ - public static final int CODE_11011 = 11011; + int CODE_11011 = 11011; /** Token无效 */ - public static final int CODE_11012 = 11012; + int CODE_11012 = 11012; /** Token已过期 */ - public static final int CODE_11013 = 11013; + int CODE_11013 = 11013; /** Token已被顶下线 */ - public static final int CODE_11014 = 11014; + int CODE_11014 = 11014; /** Token已被踢下线 */ - public static final int CODE_11015 = 11015; + int CODE_11015 = 11015; /** Token已临时过期 */ - public static final int CODE_11016 = 11016; + int CODE_11016 = 11016; /** 在未集成 sa-token-jwt 插件时调用 getExtra() 抛出异常 */ - public static final int CODE_11031 = 11031; + int CODE_11031 = 11031; /** 缺少指定的角色 */ - public static final int CODE_11041 = 11041; + int CODE_11041 = 11041; /** 缺少指定的权限 */ - public static final int CODE_11051 = 11051; + int CODE_11051 = 11051; /** 当前账号未通过服务封禁校验 */ - public static final int CODE_11061 = 11061; + int CODE_11061 = 11061; /** 提供要解禁的账号无效 */ - public static final int CODE_11062 = 11062; + int CODE_11062 = 11062; /** 提供要解禁的服务无效 */ - public static final int CODE_11063 = 11063; + int CODE_11063 = 11063; /** 提供要解禁的等级无效 */ - public static final int CODE_11064 = 11064; + int CODE_11064 = 11064; /** 二级认证校验未通过 */ - public static final int CODE_11071 = 11071; - - + int CODE_11071 = 11071; + // ------------ /** 请求中缺少指定的参数 */ - public static final int CODE_12001 = 12001; + int CODE_12001 = 12001; /** 构建 Cookie 时缺少 name 参数 */ - public static final int CODE_12002 = 12002; + int CODE_12002 = 12002; /** 构建 Cookie 时缺少 value 参数 */ - public static final int CODE_12003 = 12003; + int CODE_12003 = 12003; // ------------ /** Base64 编码异常 */ - public static final int CODE_12101 = 12101; + int CODE_12101 = 12101; /** Base64 解码异常 */ - public static final int CODE_12102 = 12102; + int CODE_12102 = 12102; /** URL 编码异常 */ - public static final int CODE_12103 = 12103; + int CODE_12103 = 12103; /** URL 解码异常 */ - public static final int CODE_12104 = 12104; + int CODE_12104 = 12104; /** md5 加密异常 */ - public static final int CODE_12111 = 12111; + int CODE_12111 = 12111; /** sha1 加密异常 */ - public static final int CODE_12112 = 12112; + int CODE_12112 = 12112; /** sha256 加密异常 */ - public static final int CODE_12113 = 12113; + int CODE_12113 = 12113; /** AES 加密异常 */ - public static final int CODE_12114 = 12114; + int CODE_12114 = 12114; /** AES 解密异常 */ - public static final int CODE_12115 = 12115; + int CODE_12115 = 12115; /** RSA 公钥加密异常 */ - public static final int CODE_12116 = 12116; + int CODE_12116 = 12116; /** RSA 私钥加密异常 */ - public static final int CODE_12117 = 12117; + int CODE_12117 = 12117; /** RSA 公钥解密异常 */ - public static final int CODE_12118 = 12118; + int CODE_12118 = 12118; /** RSA 私钥解密异常 */ - public static final int CODE_12119 = 12119; + int CODE_12119 = 12119; // ------------ /** 参与参数签名的秘钥不可为空 */ - public static final int CODE_12201 = 12201; + int CODE_12201 = 12201; /** 给定的签名无效 */ - public static final int CODE_12202 = 12202; + int CODE_12202 = 12202; /** timestamp 超出允许的范围 */ - public static final int CODE_12203 = 12203; + int CODE_12203 = 12203; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java index 052a456d..83a315e9 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/ApiDisabledException.java @@ -1,8 +1,12 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表 API 已被禁用 - * @author kong + * 一个异常:代表 API 已被禁用 + * + *

一般在 API 不合适调用的时候抛出,例如在集成 jwt 模块后调用数据持久化相关方法

+ * + * @author click33 + * @since <= 1.34.0 */ public class ApiDisabledException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/BackResultException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/BackResultException.java index b978bea0..28b1f74c 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/BackResultException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/BackResultException.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表停止匹配,直接退出,向前端输出结果 + * 一个异常:代表停止匹配,直接退出,向前端输出结果 (框架内部专属异常,一般情况下开发者无需关注) * - * @author kong + * @author click33 + * @since <= 1.34.0 */ public class BackResultException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableServiceException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableServiceException.java index 535f033c..e5c062c8 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableServiceException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/DisableServiceException.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表指定账号指定服务已被封禁 + * 一个异常:代表指定账号的指定服务已被封禁 * - * @author kong + * @author click33 + * @since <= 1.34.0 */ public class DisableServiceException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/IdTokenInvalidException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/IdTokenInvalidException.java deleted file mode 100644 index 543274a6..00000000 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/IdTokenInvalidException.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.dev33.satoken.exception; - -/** - *

本类设计已过时,未来版本可能移除此类,请及时更换为 SameTokenInvalidException ,使用方式保持不变

- * 一个异常:代表提供的 Id-Token 无效 - * - * @author kong - */ -@Deprecated -public class IdTokenInvalidException extends SaTokenException { - - /** - * 序列化版本号 - */ - private static final long serialVersionUID = 6806129545290130144L; - - /** - * 一个异常:代表提供的 Id-Token 无效 - * @param message 异常描述 - */ - public IdTokenInvalidException(String message) { - super(message); - } - -} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/InvalidContextException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/InvalidContextException.java index 54450698..1c046b85 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/InvalidContextException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/InvalidContextException.java @@ -1,9 +1,9 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表未能获取有效的上下文 + * 一个异常:代表框架未能获取有效的上下文 * - * @author kong + * @author click33 * @since 2022-10-29 */ public class InvalidContextException extends SaTokenException { @@ -14,7 +14,7 @@ public class InvalidContextException extends SaTokenException { private static final long serialVersionUID = 6806129545290130144L; /** - * 一个异常:代表未能获取有效的上下文 + * 一个异常:代表框架未能获取有效的上下文 * @param message 异常描述 */ public InvalidContextException(String message) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotBasicAuthException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotBasicAuthException.java index bbbd5ee9..b5c5aebb 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotBasicAuthException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotBasicAuthException.java @@ -1,8 +1,10 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表会话未能通过 Http Basic 认证 - * @author kong + * 一个异常:代表会话未能通过 Http Basic 认证校验 + * + * @author click33 + * @since 2022-10-29 */ public class NotBasicAuthException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotImplException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotImplException.java index 3778ef28..66cea87d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotImplException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotImplException.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.exception; /** * 一个异常:代表组件或方法未被提供有效的实现 * - * @author kong + * @author click33 * @since 2022-10-30 */ public class NotImplException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java index 751b245c..c8ca5d58 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotLoginException.java @@ -6,8 +6,10 @@ import java.util.List; import cn.dev33.satoken.util.SaFoxUtil; /** - * 一个异常:代表会话未能通过登录认证 - * @author kong + * 一个异常:代表会话未能通过登录认证校验 + * + * @author click33 + * @since <= 1.34.0 */ public class NotLoginException extends SaTokenException { @@ -26,23 +28,23 @@ public class NotLoginException extends SaTokenException { /** 表示未提供token */ public static final String NOT_TOKEN = "-1"; - public static final String NOT_TOKEN_MESSAGE = "未能读取到有效Token"; + public static final String NOT_TOKEN_MESSAGE = "未能读取到有效 token"; /** 表示token无效 */ public static final String INVALID_TOKEN = "-2"; - public static final String INVALID_TOKEN_MESSAGE = "Token无效"; + public static final String INVALID_TOKEN_MESSAGE = "token 无效"; /** 表示token已过期 */ public static final String TOKEN_TIMEOUT = "-3"; - public static final String TOKEN_TIMEOUT_MESSAGE = "Token已过期"; + public static final String TOKEN_TIMEOUT_MESSAGE = "token 已过期"; /** 表示token已被顶下线 */ public static final String BE_REPLACED = "-4"; - public static final String BE_REPLACED_MESSAGE = "Token已被顶下线"; + public static final String BE_REPLACED_MESSAGE = "token 已被顶下线"; /** 表示token已被踢下线 */ public static final String KICK_OUT = "-5"; - public static final String KICK_OUT_MESSAGE = "Token已被踢下线"; + public static final String KICK_OUT_MESSAGE = "token 已被踢下线"; /** 默认的提示语 */ public static final String DEFAULT_MESSAGE = "当前会话未登录"; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java index de8a29b6..223134c3 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotPermissionException.java @@ -3,10 +3,10 @@ package cn.dev33.satoken.exception; import cn.dev33.satoken.stp.StpUtil; /** - * 一个异常:代表会话未能通过权限认证 + * 一个异常:代表会话未能通过权限认证校验 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class NotPermissionException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java index 59d773d1..fc95022e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotRoleException.java @@ -3,10 +3,10 @@ package cn.dev33.satoken.exception; import cn.dev33.satoken.stp.StpUtil; /** - * 一个异常:代表会话未能通过角色认证 + * 一个异常:代表会话未能通过角色认证校验 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class NotRoleException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotSafeException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotSafeException.java index 1b1d2abc..96ab669e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotSafeException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotSafeException.java @@ -3,7 +3,8 @@ package cn.dev33.satoken.exception; /** * 一个异常:代表会话未能通过二级认证校验 * - * @author kong + * @author click33 + * @since <= 1.34.0 */ public class NotSafeException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotWebContextException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotWebContextException.java index 5241444d..9261f785 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotWebContextException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/NotWebContextException.java @@ -1,9 +1,9 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表不是 Web 上下文 + * 一个异常:代表当前不是 Web 上下文,无法调用某个 API * - * @author kong + * @author click33 * @since 2022-10-29 */ public class NotWebContextException extends SaTokenException { @@ -14,7 +14,7 @@ public class NotWebContextException extends SaTokenException { private static final long serialVersionUID = 6806129545290130144L; /** - * 一个异常:代表不是 Web 上下文 + * 一个异常:代表当前不是 Web 上下文,无法调用某个 API * @param message 异常描述 */ public NotWebContextException(String message) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaJsonConvertException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaJsonConvertException.java index 9c4526e9..6102a146 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaJsonConvertException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaJsonConvertException.java @@ -3,7 +3,8 @@ package cn.dev33.satoken.exception; /** * 一个异常:代表 JSON 转换失败 * - * @author kong + * @author click33 + * @since <= 1.34.0 */ public class SaJsonConvertException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaSignException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaSignException.java index 491bed46..8a120d3a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaSignException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaSignException.java @@ -5,7 +5,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * 一个异常:代表 API 参数签名校验失败 * - * @author kong + * @author click33 * @since 2023-5-3 */ public class SaSignException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaTokenException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaTokenException.java index 4e3cabf9..a18292f4 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaTokenException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SaTokenException.java @@ -4,11 +4,12 @@ import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.util.SaFoxUtil; /** - * Sa-Token框架内部逻辑发生错误抛出的异常 - * (自定义此异常方便开发者在做全局异常处理时分辨异常类型) - * - * @author kong + * Sa-Token 框架内部逻辑发生错误抛出的异常 * + *

框架其它异常均继承自此类,开发者可通过捕获此异常来捕获框架内部抛出的所有异常

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenException extends RuntimeException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SameTokenInvalidException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SameTokenInvalidException.java index 160cbf3a..791bb1a0 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/SameTokenInvalidException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/SameTokenInvalidException.java @@ -1,9 +1,9 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表提供的 Same-Token 无效 + * 一个异常:代表 Same-Token 校验未通过 * - * @author kong + * @author click33 * @since 2022-10-24 */ public class SameTokenInvalidException extends SaTokenException { @@ -14,7 +14,7 @@ public class SameTokenInvalidException extends SaTokenException { private static final long serialVersionUID = 6806129545290130144L; /** - * 一个异常:代表提供的 Same-Token 无效 + * 一个异常:代表 Same-Token 校验未通过 * @param message 异常描述 */ public SameTokenInvalidException(String message) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/exception/StopMatchException.java b/sa-token-core/src/main/java/cn/dev33/satoken/exception/StopMatchException.java index 2fa4366f..f7795cfb 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/exception/StopMatchException.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/exception/StopMatchException.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.exception; /** - * 一个异常:代表停止路由匹配,进入Controller + * 一个异常:代表停止路由匹配,进入 Controller (框架内部专属异常,一般情况下开发者无需关注) * - * @author kong + * @author click33 + * @since <= 1.34.0 */ public class StopMatchException extends SaTokenException { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilter.java b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilter.java index 65774195..a8cbb239 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilter.java @@ -19,28 +19,28 @@ public interface SaFilter { * @param paths 路由 * @return 对象自身 */ - public SaFilter addInclude(String... paths); + SaFilter addInclude(String... paths); /** * 添加 [ 放行路由 ] * @param paths 路由 * @return 对象自身 */ - public SaFilter addExclude(String... paths); + SaFilter addExclude(String... paths); /** * 写入 [ 拦截路由 ] 集合 * @param pathList 路由集合 * @return 对象自身 */ - public SaFilter setIncludeList(List pathList); + SaFilter setIncludeList(List pathList); /** * 写入 [ 放行路由 ] 集合 * @param pathList 路由集合 * @return 对象自身 */ - public SaFilter setExcludeList(List pathList); + SaFilter setExcludeList(List pathList); // ------------------------ 钩子函数 @@ -50,14 +50,14 @@ public interface SaFilter { * @param auth see note * @return 对象自身 */ - public SaFilter setAuth(SaFilterAuthStrategy auth); + SaFilter setAuth(SaFilterAuthStrategy auth); /** * 写入[ 异常处理函数 ]:每次[ 认证函数 ]发生异常时执行此函数 * @param error see note * @return 对象自身 */ - public SaFilter setError(SaFilterErrorStrategy error); + SaFilter setError(SaFilterErrorStrategy error); /** * 写入[ 前置函数 ]:在每次[ 认证函数 ]之前执行。 @@ -65,6 +65,6 @@ public interface SaFilter { * @param beforeAuth / * @return 对象自身 */ - public SaFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth); + SaFilter setBeforeAuth(SaFilterAuthStrategy beforeAuth); } \ No newline at end of file diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterAuthStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterAuthStrategy.java index 1873d5f0..f4145f5a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterAuthStrategy.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterAuthStrategy.java @@ -1,16 +1,18 @@ package cn.dev33.satoken.filter; /** - * Sa-Token全局过滤器-认证策略 - * @author kong + * Sa-Token 全局过滤器 - 认证策略封装,方便 lambda 表达式风格调用 * + * @author click33 + * @since <= 1.34.0 */ +@FunctionalInterface public interface SaFilterAuthStrategy { /** * 执行方法 - * @param r 无含义参数,留作扩展 + * @param obj 无含义参数,留作扩展 */ - public void run(Object r); + void run(Object obj); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategy.java index b1fff413..76a3b69a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategy.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategy.java @@ -1,17 +1,21 @@ package cn.dev33.satoken.filter; /** - * Sa-Token全局过滤器-异常处理策略 - * @author kong + * Sa-Token 全局过滤器 - 异常处理策略封装,方便 lambda 表达式风格调用 * + *

此方法的返回值将在 toString() 后返回给前端,如果你要返回 JSON 数据,需要在返回前自行序列化为 JSON 字符串

+ * + * @author click33 + * @since <= 1.34.0 */ +@FunctionalInterface public interface SaFilterErrorStrategy { /** * 执行方法 * @param e 异常对象 - * @return 输出对象(请提前序列化) + * @return 输出对象,此返回值将在 toString() 后返回给前端,如果你要返回 JSON 数据,需要在返回前自行序列化为 JSON 字符串 */ - public Object run(Throwable e); + Object run(Throwable e); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/IsRunFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/IsRunFunction.java index 7d611a64..8829edcd 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/fun/IsRunFunction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/IsRunFunction.java @@ -1,10 +1,10 @@ package cn.dev33.satoken.fun; /** - * 根据Boolean变量,决定是否执行一个函数 + * lambda 表达式辅助封装:根据 Boolean 变量,决定是否执行一个函数 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class IsRunFunction { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaFunction.java index e8ad5e5d..65c0336d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaFunction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaFunction.java @@ -1,10 +1,10 @@ package cn.dev33.satoken.fun; /** - * 设定一个函数,方便在Lambda表达式下的函数式编程 + * 无形参、无返回值的函数式接口,方便开发者进行 lambda 表达式风格调用 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ @FunctionalInterface public interface SaFunction { @@ -12,6 +12,6 @@ public interface SaFunction { /** * 执行的方法 */ - public void run(); + void run(); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaGenerateUniqueTokenFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaGenerateUniqueTokenFunction.java index 76f4cc6d..131a2812 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaGenerateUniqueTokenFunction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaGenerateUniqueTokenFunction.java @@ -4,7 +4,7 @@ import java.util.function.Function; import java.util.function.Supplier; /** - * 生成唯一式 token 的方法签名 + * 生成唯一式 token 的函数式接口,方便开发者进行 lambda 表达式风格调用 * * @author click33 * @since 2023/4/30 @@ -21,7 +21,7 @@ public interface SaGenerateUniqueTokenFunction { * @param checkTokenFunction 校验 token 是否唯一的函数(返回 true 表示唯一,可用) * @return 最终生成的唯一式 token */ - public String execute( + String execute( String elementName, int maxTryTimes, Supplier createTokenFunction, diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamFunction.java index 52442204..2197c549 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamFunction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamFunction.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.fun; /** - * 设定一个函数,并传入一个参数,方便在Lambda表达式下的函数式编程 - * @author kong + * 单形参、无返回值的函数式接口,方便开发者进行 lambda 表达式风格调用 * + * @author click33 + * @since <= 1.34.0 */ @FunctionalInterface public interface SaParamFunction { @@ -12,6 +13,6 @@ public interface SaParamFunction { * 执行的方法 * @param r 传入的参数 */ - public void run(T r); + void run(T r); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamRetFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamRetFunction.java index 2e0536ff..b6b9af34 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamRetFunction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaParamRetFunction.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.fun; /** - * 设定一个函数,传入一个参数,并返回一个值,方便在Lambda表达式下的函数式编程 - * @author kong + * 单形参、有返回值的函数式接口,方便开发者进行 lambda 表达式风格调用 * + * @author click33 + * @since <= 1.34.0 */ @FunctionalInterface public interface SaParamRetFunction { @@ -13,6 +14,6 @@ public interface SaParamRetFunction { * @param param 传入的参数 * @return 返回值 */ - public R run(T param); + R run(T param); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRetFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRetFunction.java index 58cc7ea3..132cb206 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRetFunction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRetFunction.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.fun; /** - * 设定一个函数,并返回一个值,方便在Lambda表达式下的函数式编程 - * @author kong + * 无形参、有返回值的函数式接口,方便开发者进行 lambda 表达式风格调用 * + * @author click33 + * @since <= 1.34.0 */ @FunctionalInterface public interface SaRetFunction { @@ -12,6 +13,6 @@ public interface SaRetFunction { * 执行的方法 * @return 返回值 */ - public Object run(); + Object run(); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRouteFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRouteFunction.java new file mode 100644 index 00000000..1e048376 --- /dev/null +++ b/sa-token-core/src/main/java/cn/dev33/satoken/fun/SaRouteFunction.java @@ -0,0 +1,24 @@ +package cn.dev33.satoken.fun; + +import cn.dev33.satoken.context.model.SaRequest; +import cn.dev33.satoken.context.model.SaResponse; + +/** + * 路由拦截器验证方法的函数式接口,方便开发者进行 lambda 表达式风格调用 + * + * @author click33 + * @since <= 1.34.0 + */ +@FunctionalInterface +public interface SaRouteFunction { + + /** + * 执行验证的方法 + * + * @param request Request 包装对象 + * @param response Response 包装对象 + * @param handler 处理对象 + */ + void run(SaRequest request, SaResponse response, Object handler); + +} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplate.java b/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplate.java index 5ad60d17..9869a66b 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplate.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplate.java @@ -5,24 +5,24 @@ import java.util.Map; /** * JSON 转换器 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public interface SaJsonTemplate { /** - * 将任意对象转换为 json 字符串 + * 将任意对象序列化为 json 字符串 * * @param obj 对象 * @return 转换后的 json 字符串 */ - public String toJsonString(Object obj); + String toJsonString(Object obj); /** - * 解析 json 字符串为map对象 - * @param jsonStr json字符串 - * @return map对象 + * 解析 json 字符串为 map 对象 + * @param jsonStr json 字符串 + * @return map 对象 */ - public Map parseJsonToMap(String jsonStr); + Map parseJsonToMap(String jsonStr); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplateDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplateDefaultImpl.java index 67f0de0f..1f44e463 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplateDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/json/SaJsonTemplateDefaultImpl.java @@ -6,26 +6,22 @@ import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.exception.NotImplException; /** - * JSON 相关操作接口 - * - * @author kong + * JSON 转换器,默认实现类 * + *

如果代码断点走到了此默认实现类,说明框架没有注入有效的 JSON 转换器,需要开发者自行实现并注入

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaJsonTemplateDefaultImpl implements SaJsonTemplate { public static final String ERROR_MESSAGE = "未实现具体的 json 转换器"; - - /** - * 将任意对象转换为 json 字符串 - */ + @Override public String toJsonString(Object obj) { throw new NotImplException(ERROR_MESSAGE).setCode(SaErrorCode.CODE_10003); } - - /** - * 将 json 字符串解析为 Map - */ + @Override public Map parseJsonToMap(String jsonStr) { throw new NotImplException(ERROR_MESSAGE).setCode(SaErrorCode.CODE_10003); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java index 4bb1890a..ac434e7a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java @@ -11,8 +11,10 @@ import cn.dev33.satoken.stp.StpLogic; /** * Sa-Token 事件中心 事件发布器 + * + *

提供侦听器注册、事件发布能力

* - * @author kong + * @author click33 * @since: 2022-8-19 */ public class SaTokenEventCenter { @@ -127,7 +129,7 @@ public class SaTokenEventCenter { // --------- 事件发布 /** - * 每次登录时触发 + * 事件发布:xx 账号登录 * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue 本次登录产生的 token 值 @@ -140,7 +142,7 @@ public class SaTokenEventCenter { } /** - * 每次注销时触发 + * 事件发布:xx 账号注销 * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue token值 @@ -152,7 +154,7 @@ public class SaTokenEventCenter { } /** - * 每次被踢下线时触发 + * 事件发布:xx 账号被踢下线 * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue token值 @@ -164,7 +166,7 @@ public class SaTokenEventCenter { } /** - * 每次被顶下线时触发 + * 事件发布:xx 账号被顶下线 * @param loginType 账号类别 * @param loginId 账号id * @param tokenValue token值 @@ -176,7 +178,7 @@ public class SaTokenEventCenter { } /** - * 每次被封禁时触发 + * 事件发布:xx 账号被封禁 * @param loginType 账号类别 * @param loginId 账号id * @param service 指定服务 @@ -190,7 +192,7 @@ public class SaTokenEventCenter { } /** - * 每次被解封时触发 + * 事件发布:xx 账号被解封 * @param loginType 账号类别 * @param loginId 账号id * @param service 指定服务 @@ -202,7 +204,7 @@ public class SaTokenEventCenter { } /** - * 每次打开二级认证时触发 + * 事件发布:xx 账号完成二级认证 * @param loginType 账号类别 * @param tokenValue token值 * @param service 指定服务 @@ -215,7 +217,7 @@ public class SaTokenEventCenter { } /** - * 每次关闭二级认证时触发 + * 事件发布:xx 账号关闭二级认证 * @param loginType 账号类别 * @param service 指定服务 * @param tokenValue token值 @@ -227,7 +229,7 @@ public class SaTokenEventCenter { } /** - * 每次创建Session时触发 + * 事件发布:创建了一个新的 SaSession * @param id SessionId */ public static void doCreateSession(String id) { @@ -237,7 +239,7 @@ public class SaTokenEventCenter { } /** - * 每次注销Session时触发 + * 事件发布:一个 SaSession 注销了 * @param id SessionId */ public static void doLogoutSession(String id) { @@ -247,7 +249,7 @@ public class SaTokenEventCenter { } /** - * 每次Token续期时触发 + * 事件发布:指定 Token 续期成功 * * @param tokenValue token 值 * @param loginId 账号id @@ -259,9 +261,8 @@ public class SaTokenEventCenter { } } - /** - * 全局组件载入 + * 事件发布:有新的全局组件载入到框架中 * @param compName 组件名称 * @param compObj 组件对象 */ @@ -272,7 +273,7 @@ public class SaTokenEventCenter { } /** - * StpLogic 对象替换 + * 事件发布:有新的 StpLogic 载入到框架中 * @param stpLogic / */ public static void doSetStpLogic(StpLogic stpLogic) { @@ -282,7 +283,7 @@ public class SaTokenEventCenter { } /** - * 载入全局配置 + * 事件发布:有新的全局配置载入到框架中 * @param config / */ public static void doSetConfig(SaTokenConfig config) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java index 6cb6ffe8..fdc9d034 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListener.java @@ -6,9 +6,11 @@ import cn.dev33.satoken.stp.StpLogic; /** * Sa-Token 侦听器 - *

你可以通过实现此接口在用户登陆、退出等关键性操作时进行一些AOP操作 - * @author kong * + *

你可以通过实现此接口在用户登录、退出等关键性操作时进行一些AOP切面操作

+ * + * @author click33 + * @since <= 1.34.0 */ public interface SaTokenListener { @@ -19,7 +21,7 @@ public interface SaTokenListener { * @param tokenValue 本次登录产生的 token 值 * @param loginModel 登录参数 */ - public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel); + void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel); /** * 每次注销时触发 @@ -27,7 +29,7 @@ public interface SaTokenListener { * @param loginId 账号id * @param tokenValue token值 */ - public void doLogout(String loginType, Object loginId, String tokenValue); + void doLogout(String loginType, Object loginId, String tokenValue); /** * 每次被踢下线时触发 @@ -35,7 +37,7 @@ public interface SaTokenListener { * @param loginId 账号id * @param tokenValue token值 */ - public void doKickout(String loginType, Object loginId, String tokenValue); + void doKickout(String loginType, Object loginId, String tokenValue); /** * 每次被顶下线时触发 @@ -43,7 +45,7 @@ public interface SaTokenListener { * @param loginId 账号id * @param tokenValue token值 */ - public void doReplaced(String loginType, Object loginId, String tokenValue); + void doReplaced(String loginType, Object loginId, String tokenValue); /** * 每次被封禁时触发 @@ -53,7 +55,7 @@ public interface SaTokenListener { * @param level 封禁等级 * @param disableTime 封禁时长,单位: 秒 */ - public void doDisable(String loginType, Object loginId, String service, int level, long disableTime); + void doDisable(String loginType, Object loginId, String service, int level, long disableTime); /** * 每次被解封时触发 @@ -61,7 +63,7 @@ public interface SaTokenListener { * @param loginId 账号id * @param service 指定服务 */ - public void doUntieDisable(String loginType, Object loginId, String service); + void doUntieDisable(String loginType, Object loginId, String service); /** * 每次打开二级认证时触发 @@ -70,7 +72,7 @@ public interface SaTokenListener { * @param service 指定服务 * @param safeTime 认证时间,单位:秒 */ - public void doOpenSafe(String loginType, String tokenValue, String service, long safeTime); + void doOpenSafe(String loginType, String tokenValue, String service, long safeTime); /** * 每次关闭二级认证时触发 @@ -78,46 +80,46 @@ public interface SaTokenListener { * @param tokenValue token值 * @param service 指定服务 */ - public void doCloseSafe(String loginType, String tokenValue, String service); + void doCloseSafe(String loginType, String tokenValue, String service); /** - * 每次创建Session时触发 + * 每次创建 SaSession 时触发 * @param id SessionId */ - public void doCreateSession(String id); + void doCreateSession(String id); /** - * 每次注销Session时触发 + * 每次注销 SaSession 时触发 * @param id SessionId */ - public void doLogoutSession(String id); + void doLogoutSession(String id); /** - * 每次Token续期时触发 + * 每次 Token 续期时触发(注意:是 timeout 续期,而不是 activity-timeout 续期) * * @param tokenValue token 值 * @param loginId 账号id * @param timeout 续期时间 */ - public void doRenewTimeout(String tokenValue, Object loginId, long timeout); + void doRenewTimeout(String tokenValue, Object loginId, long timeout); /** * 全局组件载入 * @param compName 组件名称 * @param compObj 组件对象 */ - public default void doRegisterComponent(String compName, Object compObj) {} + default void doRegisterComponent(String compName, Object compObj) {} /** * StpLogic 对象替换 * @param stpLogic / */ - public default void doSetStpLogic(StpLogic stpLogic) {} + default void doSetStpLogic(StpLogic stpLogic) {} /** * 载入全局配置 * @param config / */ - public default void doSetConfig(SaTokenConfig config) {} + default void doSetConfig(SaTokenConfig config) {} } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java index 8b763056..d88950c6 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForLog.java @@ -8,9 +8,9 @@ import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.util.SaFoxUtil; /** - * Sa-Token 侦听器实现:Log 打印 + * Sa-Token 侦听器的一个实现:Log 打印 * - * @author kong + * @author click33 * @since 2022-11-2 */ public class SaTokenListenerForLog implements SaTokenListener { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java index 21cb87b4..ba7507b0 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForSimple.java @@ -5,9 +5,9 @@ import cn.dev33.satoken.stp.SaLoginModel; /** * Sa-Token 侦听器,默认空实现 * - *

对所有事件方法提供空实现,方便开发者通过继承此类快速实现一个可用的侦听器 + *

对所有事件方法提供空实现,方便开发者通过继承此类快速实现一个可用的侦听器

* - * @author kong + * @author click33 * @since: 2022-8-20 */ public class SaTokenListenerForSimple implements SaTokenListener { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLog.java b/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLog.java index 769bcef8..820d933f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLog.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLog.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.log; /** * Sa-Token 日志输出接口 * - * @author kong + * @author click33 * @since 2022-11-1 */ public interface SaLog { @@ -13,41 +13,41 @@ public interface SaLog { * @param str 日志内容 * @param args 参数列表 */ - public void trace(String str, Object ...args); + void trace(String str, Object ...args); /** * 输出 debug 日志 * @param str 日志内容 * @param args 参数列表 */ - public void debug(String str, Object ...args); + void debug(String str, Object ...args); /** * 输出 info 日志 * @param str 日志内容 * @param args 参数列表 */ - public void info(String str, Object ...args); + void info(String str, Object ...args); /** * 输出 warn 日志 * @param str 日志内容 * @param args 参数列表 */ - public void warn(String str, Object ...args); + void warn(String str, Object ...args); /** * 输出 error 日志 * @param str 日志内容 * @param args 参数列表 */ - public void error(String str, Object ...args); + void error(String str, Object ...args); /** * 输出 fatal 日志 * @param str 日志内容 * @param args 参数列表 */ - public void fatal(String str, Object ...args); + void fatal(String str, Object ...args); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLogForConsole.java b/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLogForConsole.java index 837a92e9..8aae35ae 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLogForConsole.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/log/SaLogForConsole.java @@ -5,18 +5,13 @@ import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.util.StrFormatter; /** - * Sa-Token 日志实现类 [控制台打印] + * Sa-Token 日志实现类 [ 控制台打印 ] * - * @author kong + * @author click33 * @since 2022-11-1 */ public class SaLogForConsole implements SaLog { - /** - * 日志输出的前缀 - */ - public static String LOG_PREFIX = "SaLog -->: "; - /** * 日志等级 */ @@ -26,48 +21,107 @@ public class SaLogForConsole implements SaLog { public static final int warn = 4; public static final int error = 5; public static final int fatal = 6; - + + /** + * 日志输出的前缀 + */ + public static String LOG_PREFIX = "SaLog -->: "; + public static String TRACE_PREFIX = "SA [TRACE]-->: "; + public static String DEBUG_PREFIX = "SA [DEBUG]-->: "; + public static String INFO_PREFIX = "SA [INFO] -->: "; + public static String WARN_PREFIX = "SA [WARN] -->: "; + public static String ERROR_PREFIX = "SA [ERROR]-->: "; + public static String FATAL_PREFIX = "SA [FATAL]-->: "; + + /** + * 日志输出的颜色 + */ + public static String TRACE_COLOR = "\033[39m"; + public static String DEBUG_COLOR = "\033[34m"; + public static String INFO_COLOR = "\033[32m"; + public static String WARN_COLOR = "\033[33m"; + public static String ERROR_COLOR = "\033[31m"; + public static String FATAL_COLOR = "\033[35m"; + + public static String DEFAULT_COLOR = "\033[39m"; + @Override public void trace(String str, Object... args) { - println(trace, str, args); + println(trace, TRACE_COLOR, TRACE_PREFIX, str, args); } @Override public void debug(String str, Object... args) { - println(debug, str, args); + println(debug, DEBUG_COLOR, DEBUG_PREFIX, str, args); } @Override public void info(String str, Object... args) { - println(info, str, args); + println(info, INFO_COLOR, INFO_PREFIX, str, args); } @Override public void warn(String str, Object... args) { - println(warn, str, args); + println(warn, WARN_COLOR, WARN_PREFIX, str, args); } @Override public void error(String str, Object... args) { - println(error, str, args); + println(error, ERROR_COLOR, ERROR_PREFIX, str, args); } @Override public void fatal(String str, Object... args) { - println(fatal, str, args); + println(fatal, FATAL_COLOR, FATAL_PREFIX, str, args); } /** * 打印日志到控制台 - * @param level 日志等级 + * @param level 日志等级 + * @param color 颜色编码 + * @param prefix 前缀 * @param str 字符串 * @param args 参数列表 */ - public void println(int level, String str, Object... args) { + public void println(int level, String color, String prefix, String str, Object... args) { SaTokenConfig config = SaManager.getConfig(); if(config.getIsLog() && level >= config.getLogLevelInt()) { - System.out.println(LOG_PREFIX + StrFormatter.format(str, args)); + if(config.getIsColorLog() == Boolean.TRUE) { + // 彩色日志 + System.out.println(color + prefix + StrFormatter.format(str, args) + DEFAULT_COLOR); + } else { + // 黑白日志 + System.out.println(prefix + StrFormatter.format(str, args)); + } } } + /* + // 三种写法速度对比 + // if( config.getIsColorLog() != null && config.getIsColorLog() ) 10亿次,2058ms + // if( config.getIsColorLog() == Boolean.TRUE ) 10亿次,1050ms 最快 + // if( Objects.equals(config.getIsColorLog(), Boolean.TRUE) ) 10亿次,1543ms + */ + + /* + 颜色参考: + DEFAULT 39 + BLACK 30 + RED 31 + GREEN 32 + YELLOW 33 + BLUE 34 + MAGENTA 35 + CYAN 36 + WHITE 37 + BRIGHT_BLACK 90 + BRIGHT_RED 91 + BRIGHT_GREEN 92 + BRIGHT_YELLOW 93 + BRIGHT_BLUE 94 + BRIGHT_MAGENTA 95 + BRIGHT_CYAN 96 + BRIGHT_WHITE 97 + */ + } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaHttpMethod.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaHttpMethod.java index 36d353f3..6b24c19d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaHttpMethod.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaHttpMethod.java @@ -11,8 +11,8 @@ import cn.dev33.satoken.exception.SaTokenException; * *

参考:Spring - HttpMethod * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public enum SaHttpMethod { @@ -34,7 +34,7 @@ public enum SaHttpMethod { /** * String 转 enum * @param method 请求类型 - * @return ReqMethod 对象 + * @return SaHttpMethod 对象 */ public static SaHttpMethod toEnum(String method) { if(method == null) { @@ -50,7 +50,7 @@ public enum SaHttpMethod { /** * String[] 转 enum[] * @param methods 请求类型数组 - * @return ReqMethod 对象 + * @return SaHttpMethod 数组 */ public static SaHttpMethod[] toEnumArray(String... methods) { SaHttpMethod [] arr = new SaHttpMethod[methods.length]; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouteFunction.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouteFunction.java deleted file mode 100644 index 7ec2af19..00000000 --- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouteFunction.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.dev33.satoken.router; - -import cn.dev33.satoken.context.model.SaRequest; -import cn.dev33.satoken.context.model.SaResponse; - -/** - * 路由拦截器验证方法Lambda - * - * @author kong - * - */ -@FunctionalInterface -public interface SaRouteFunction { - - /** - * 执行验证的方法 - * - * @param request Request包装对象 - * @param response Response包装对象 - * @param handler 处理对象 - */ - public void run(SaRequest request, SaResponse response, Object handler); - -} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java index 41c1e91b..14228909 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java @@ -11,9 +11,20 @@ import cn.dev33.satoken.fun.SaParamFunction; import cn.dev33.satoken.fun.SaParamRetFunction; /** - * 路由匹配操作工具类 - * @author kong + * 路由匹配操作工具类 * + *

提供了一系列的路由匹配操作方法,一般用在全局拦截器、过滤器做路由拦截鉴权。

+ *

简单示例:

+ *
+ *    	// 指定一条 match 规则
+ *    	SaRouter
+ *    	   	.match("/**")    // 拦截的 path 列表,可以写多个
+ *   	   	.notMatch("/user/doLogin")        // 排除掉的 path 列表,可以写多个
+ *   	   	.check(r->StpUtil.checkLogin());        // 要执行的校验动作,可以写完整的 lambda 表达式
+ * 
+ * + * @author click33 + * @since <= 1.34.0 */ public class SaRouter { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java index 63d1974f..5f14d09f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java @@ -11,8 +11,8 @@ import cn.dev33.satoken.fun.SaParamRetFunction; /** * 路由匹配操作对象 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class SaRouterStaff { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameTemplate.java b/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameTemplate.java index eaacc17f..29bcfc6d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameTemplate.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameTemplate.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.util.SaFoxUtil; * *

解决同源系统互相调用时的身份认证校验, 例如:微服务网关请求转发鉴权、微服务RPC调用鉴权 * - * @author kong + * @author click33 * @since 2022-10-24 */ public class SaSameTemplate { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameUtil.java index 55729930..951eecff 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/same/SaSameUtil.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; * *

解决同源系统互相调用时的身份认证校验, 例如:微服务网关请求转发鉴权、微服务RPC调用鉴权 * - * @author kong + * @author click33 * @since 2022-10-24 */ public class SaSameUtil { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaBase64Util.java b/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaBase64Util.java index a04aec8e..c512e07f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaBase64Util.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaBase64Util.java @@ -7,9 +7,10 @@ import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.exception.SaTokenException; /** - * Sa-Token Base64工具类 - * @author kong + * Sa-Token Base64 工具类 * + * @author click33 + * @since <= 1.34.0 */ public class SaBase64Util { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java index 58e9c405..683e4fdc 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java @@ -29,8 +29,8 @@ import cn.dev33.satoken.exception.SaTokenException; /** * Sa-Token 常见加密算法工具类 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class SaSecureUtil { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java index 9f61271c..6bf476db 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java @@ -15,11 +15,20 @@ import cn.dev33.satoken.listener.SaTokenEventCenter; import cn.dev33.satoken.util.SaFoxUtil; /** - * Session Model,会话作用域的读取值对象 - *

在一次会话范围内: 存值、取值 + * Session Model,会话作用域的读取值对象 * - * @author kong + *

在一次会话范围内: 存值、取值。数据在注销登录后失效。

+ *

+ * 在 Sa-Token 中,SaSession 分为三种,分别是:
+ * - Account-Session: 指的是框架为每个 账号id 分配的 SaSession。
+ * - Token-Session: 指的是框架为每个 token 分配的 SaSession。
+ * - Custom-Session: 指的是以一个 特定的值 作为SessionId,来分配的 SaSession。
+ *
+ * 注意:以上分类仅为框架设计层面的概念区分,实际上它们的数据存储格式都是一致的。 + *

* + * @author click33 + * @since <= 1.34.0 */ public class SaSession implements SaSetValueInterface, Serializable { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java index 1fe670c8..b7b843f8 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java @@ -2,9 +2,10 @@ package cn.dev33.satoken.session; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.strategy.SaStrategy; +import cn.dev33.satoken.util.SaTokenConsts; /** - * 自定义 Session 工具类 + * 自定义 SaSession 工具类,快捷的读取、操作自定义 SaSession * *

样例: *

@@ -18,8 +19,8 @@ import cn.dev33.satoken.strategy.SaStrategy;
  * 		System.out.println("count=" + count);
  * 
* - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class SaSessionCustomUtil { @@ -27,13 +28,13 @@ public class SaSessionCustomUtil { } /** - * 添加上指定前缀,防止恶意伪造Session + * 添加上指定前缀,防止恶意伪造数据 */ public static String sessionKey = "custom"; /** - * 拼接Key: 自定义Session的Id - * + * 拼接Key: 在存储自定义 SaSession 时应该使用的 key + * * @param sessionId 会话id * @return sessionId */ @@ -42,9 +43,9 @@ public class SaSessionCustomUtil { } /** - * 指定key的Session是否存在 + * 判断:指定 key 的 SaSession 是否存在 * - * @param sessionId Session的id + * @param sessionId SaSession 的 id * @return 是否存在 */ public static boolean isExists(String sessionId) { @@ -52,35 +53,36 @@ public class SaSessionCustomUtil { } /** - * 获取指定key的Session + * 获取指定 key 的 SaSession 对象, 如果此 SaSession 尚未在 DB 创建,isCreate 参数代表是否则新建并返回 * - * @param sessionId key - * @param isCreate 如果此Session尚未在DB创建,是否新建并返回 - * @return SaSession + * @param sessionId SaSession 的 id + * @param isCreate 如果此 SaSession 尚未在 DB 创建,是否新建并返回 + * @return SaSession 对象 */ public static SaSession getSessionById(String sessionId, boolean isCreate) { SaSession session = SaManager.getSaTokenDao().getSession(splicingSessionKey(sessionId)); if (session == null && isCreate) { session = SaStrategy.me.createSession.apply(splicingSessionKey(sessionId)); + session.setType(SaTokenConsts.SESSION_TYPE__CUSTOM); SaManager.getSaTokenDao().setSession(session, SaManager.getConfig().getTimeout()); } return session; } /** - * 获取指定key的Session, 如果此Session尚未在DB创建,则新建并返回 + * 获取指定 key 的 SaSession, 如果此 SaSession 尚未在 DB 创建,则新建并返回 * - * @param sessionId key - * @return session对象 + * @param sessionId SaSession 的 id + * @return SaSession 对象 */ public static SaSession getSessionById(String sessionId) { return getSessionById(sessionId, true); } /** - * 删除指定key的Session + * 删除指定 key 的 SaSession * - * @param sessionId 指定key + * @param sessionId SaSession 的 id */ public static void deleteSessionById(String sessionId) { SaManager.getSaTokenDao().deleteSession(splicingSessionKey(sessionId)); diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/session/TokenSign.java b/sa-token-core/src/main/java/cn/dev33/satoken/session/TokenSign.java index 298ee942..a5795405 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/session/TokenSign.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/session/TokenSign.java @@ -4,10 +4,11 @@ import java.io.Serializable; /** * Token 签名 Model - *

- * 挂在到 SaSession 上的 Token 签名 * - * @author kong + *

挂在到 SaSession 上的 Token 签名,一般情况下,一个 TokenSign 代表一个登录的会话。

+ * + * @author click33 + * @since <= 1.34.0 */ public class TokenSign implements Serializable { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignTemplate.java b/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignTemplate.java index c9057058..ada8025e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignTemplate.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignTemplate.java @@ -12,9 +12,17 @@ import java.util.Map; import java.util.TreeMap; /** - * API 参数签名算法 + * API 参数签名算法,在跨系统接口调用时防参数篡改、防重放攻击。 * - * @author kong + *

+ * 以 SSO 数据拉取为例,流程大致如下: + *
1. 以 md5( loginId={账号id}8nonce={随机字符串}8timestamp={13位时间戳}8key={secretkey秘钥} ) 生成签名 sign。 + *
2. 将 sign 作为参数,拼接到请求地址后面,如:http://xxx.com?loginId=100018nonce=xxx8timestamp=xxx8sign=xxx。 + *
3. 服务端接收到请求后,以同样的算法生成一次 sign 。 + *
4. 对比两次 sign 是否一致,一致则通过,否则拒绝 。 + *

+ * + * @author click33 * @since 2022-4-27 */ public class SaSignTemplate { @@ -35,6 +43,7 @@ public class SaSignTemplate { * 获取:API 签名配置: * 1. 如果用户自定义了 signConfig ,则使用用户自定义的。 * 2. 否则使用全局默认配置。 + * * @return / */ public SaSignConfig getSignConfigOrGlobal() { @@ -136,6 +145,15 @@ public class SaSignTemplate { // 计算签名 String paramsStr = joinParamsDictSort(paramsMap); String fullStr = paramsStr + "&" + key + "=" + secretKey; + return abstractStr(fullStr); + } + + /** + * 使用摘要算法创建签名 + * @param fullStr 待摘要的字符串 + * @return 签名 + */ + public String abstractStr(String fullStr) { return SaSecureUtil.md5(fullStr); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignUtil.java index 649b9b2c..1f6a9525 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/sign/SaSignUtil.java @@ -8,7 +8,7 @@ import java.util.Map; /** * API 参数签名算法 - 工具类 * - * @author kong + * @author click33 * @since 2022-4-27 */ public class SaSignUtil { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java index e25b7ebf..d0da8323 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginConfig.java @@ -3,11 +3,18 @@ package cn.dev33.satoken.stp; import java.util.Map; /** - * - * 快速构建 调用 `StpUtil.login()` 时的 [配置参数 Model ] - * - * @author kong + * 快速、简洁的构建:调用 `StpUtil.login()` 时的 [ 配置参数 SaLoginModel ] * + *
+ *     	// 例如:在登录时指定 token 有效期为七天,代码如下:
+ *     	StpUtil.login(10001, SaLoginConfig.setTimeout(60 * 60 * 24 * 7));
+ *
+ *     	// 上面的代码与下面的代码等价
+ *     	StpUtil.login(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
+ * 
+ * + * @author click33 + * @since <= 1.34.0 */ public class SaLoginConfig { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java index 1813890f..48e9093d 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginModel.java @@ -9,9 +9,15 @@ import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.util.SaTokenConsts; /** - * 调用 `StpUtil.login()` 时的 [配置参数 Model ] - * @author kong + * 在调用 `StpUtil.login()` 时的 配置参数 Model,决定登录的一些细节行为
* + *
+ *     	// 例如:在登录时指定 token 有效期为七天,代码如下:
+ *     	StpUtil.login(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
+ * 
+ * + * @author click33 + * @since <= 1.34.0 */ public class SaLoginModel { @@ -185,8 +191,8 @@ public class SaLoginModel { + "]"; } + // ------ 附加方法 - /** * 写入扩展数据(只在jwt模式下生效) diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaTokenInfo.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaTokenInfo.java index 6812bca3..8ac4f0fb 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaTokenInfo.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaTokenInfo.java @@ -1,169 +1,187 @@ package cn.dev33.satoken.stp; /** - * Token信息Model: 用来描述一个Token的常用参数 - * - * @author kong + * Token 信息 Model: 用来描述一个 Token 的常见参数。 * + *

+ * 例如:
+ *

+ *     {
+ *         "tokenName": "satoken",           // token名称
+ *         "tokenValue": "e67b99f1-3d7a-4a8d-bb2f-e888a0805633",      // token值
+ *         "isLogin": true,                  // 此token是否已经登录
+ *         "loginId": "10001",               // 此token对应的LoginId,未登录时为null
+ *         "loginType": "login",              // 账号类型标识
+ *         "tokenTimeout": 2591977,          // token剩余有效期 (单位: 秒)
+ *         "sessionTimeout": 2591977,        // User-Session剩余有效时间 (单位: 秒)
+ *         "tokenSessionTimeout": -2,        // Token-Session剩余有效时间 (单位: 秒) (-2表示系统中不存在这个缓存)
+ *         "tokenActivityTimeout": -1,       // token剩余无操作有效时间 (单位: 秒)
+ *         "loginDevice": "default-device"   // 登录设备类型
+ *     }
+ *     
+ *

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenInfo { - /** token名称 */ + /** token 名称 */ public String tokenName; - /** token值 */ + /** token 值 */ public String tokenValue; - /** 此token是否已经登录 */ + /** 此 token 是否已经登录 */ public Boolean isLogin; - /** 此token对应的LoginId,未登录时为null */ + /** 此 token 对应的 LoginId,未登录时为 null */ public Object loginId; - /** 账号类型 */ + /** 多账号体系下的账号类型 */ public String loginType; - /** token剩余有效期 (单位: 秒) */ + /** token 剩余有效期(单位: 秒) */ public long tokenTimeout; - /** User-Session剩余有效时间 (单位: 秒) */ + /** Account-Session 剩余有效时间(单位: 秒) */ public long sessionTimeout; - /** Token-Session剩余有效时间 (单位: 秒) */ + /** Token-Session 剩余有效时间(单位: 秒) */ public long tokenSessionTimeout; - /** token剩余无操作有效时间 (单位: 秒) */ + /** token 剩余无操作有效时间(单位: 秒) */ public long tokenActivityTimeout; /** 登录设备类型 */ public String loginDevice; - /** 自定义数据 */ + /** 自定义数据(暂无意义,留作扩展) */ public String tag; /** - * @return token名称 + * @return token 名称 */ public String getTokenName() { return tokenName; } /** - * @param tokenName token名称 + * @param tokenName token 名称 */ public void setTokenName(String tokenName) { this.tokenName = tokenName; } /** - * @return token值 + * @return token 值 */ public String getTokenValue() { return tokenValue; } /** - * @param tokenValue token值 + * @param tokenValue token 值 */ public void setTokenValue(String tokenValue) { this.tokenValue = tokenValue; } /** - * @return 此token是否已经登录 + * @return 此 token 是否已经登录 */ public Boolean getIsLogin() { return isLogin; } /** - * @param isLogin 此token是否已经登录 + * @param isLogin 此 token 是否已经登录 */ public void setIsLogin(Boolean isLogin) { this.isLogin = isLogin; } /** - * @return 此token对应的LoginId,未登录时为null + * @return 此 token 对应的LoginId,未登录时为null */ public Object getLoginId() { return loginId; } /** - * @param loginId 此token对应的LoginId,未登录时为null + * @param loginId 此 token 对应的LoginId,未登录时为null */ public void setLoginId(Object loginId) { this.loginId = loginId; } /** - * @return 账号类型 + * @return 多账号体系下的账号类型 */ public String getLoginType() { return loginType; } /** - * @param loginType 账号类型 + * @param loginType 多账号体系下的账号类型 */ public void setLoginType(String loginType) { this.loginType = loginType; } /** - * @return token剩余有效期 (单位: 秒) + * @return token 剩余有效期(单位: 秒) */ public long getTokenTimeout() { return tokenTimeout; } /** - * @param tokenTimeout token剩余有效期 (单位: 秒) + * @param tokenTimeout token剩余有效期(单位: 秒) */ public void setTokenTimeout(long tokenTimeout) { this.tokenTimeout = tokenTimeout; } /** - * @return User-Session剩余有效时间 (单位: 秒) + * @return Account-Session 剩余有效时间(单位: 秒) */ public long getSessionTimeout() { return sessionTimeout; } /** - * @param sessionTimeout User-Session剩余有效时间 (单位: 秒) + * @param sessionTimeout Account-Session剩余有效时间(单位: 秒) */ public void setSessionTimeout(long sessionTimeout) { this.sessionTimeout = sessionTimeout; } /** - * @return Token-Session剩余有效时间 (单位: 秒) + * @return Token-Session剩余有效时间(单位: 秒) */ public long getTokenSessionTimeout() { return tokenSessionTimeout; } /** - * @param tokenSessionTimeout Token-Session剩余有效时间 (单位: 秒) + * @param tokenSessionTimeout Token-Session剩余有效时间(单位: 秒) */ public void setTokenSessionTimeout(long tokenSessionTimeout) { this.tokenSessionTimeout = tokenSessionTimeout; } /** - * @return token剩余无操作有效时间 (单位: 秒) + * @return token 剩余无操作有效时间(单位: 秒) */ public long getTokenActivityTimeout() { return tokenActivityTimeout; } /** - * @param tokenActivityTimeout token剩余无操作有效时间 (单位: 秒) + * @param tokenActivityTimeout token 剩余无操作有效时间(单位: 秒) */ public void setTokenActivityTimeout(long tokenActivityTimeout) { this.tokenActivityTimeout = tokenActivityTimeout; @@ -184,14 +202,14 @@ public class SaTokenInfo { } /** - * @return 自定义数据 + * @return 自定义数据(暂无意义,留作扩展) */ public String getTag() { return tag; } /** - * @param tag 自定义数据 + * @param tag 自定义数据(暂无意义,留作扩展) */ public void setTag(String tag) { this.tag = tag; @@ -208,7 +226,5 @@ public class SaTokenInfo { + ", tokenActivityTimeout=" + tokenActivityTimeout + ", loginDevice=" + loginDevice + ", tag=" + tag + "]"; } - - } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterface.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterface.java index 092beaa9..6d953360 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterface.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterface.java @@ -3,9 +3,15 @@ package cn.dev33.satoken.stp; import java.util.List; /** - * 权限认证接口,实现此接口即可集成权限认证功能 + * 权限数据加载源接口 + * + *

+ * 在使用权限校验 API 之前,你必须实现此接口,告诉框架哪些用户拥有哪些权限。
+ * 框架默认不对数据进行缓存,如果你的数据是从数据库中读取的,一般情况下你需要手动实现数据的缓存读写。 + *

* - * @author kong + * @author click33 + * @since <= 1.34.0 */ public interface StpInterface { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterfaceDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterfaceDefaultImpl.java index b2f7f8de..6b191082 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterfaceDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpInterfaceDefaultImpl.java @@ -6,9 +6,10 @@ import java.util.List; /** * 对 {@link StpInterface} 接口默认的实现类 *

- * 如果开发者没有实现StpInterface接口,则使用此默认实现 + * 如果开发者没有实现 StpInterface 接口,则框架会使用此默认实现类,所有方法都返回空集合,即:用户不具有任何权限和角色。 * - * @author kong + * @author click33 + * @since <= 1.34.0 */ public class StpInterfaceDefaultImpl implements StpInterface { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java index 09ea2826..7873c05b 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java @@ -1,18 +1,7 @@ package cn.dev33.satoken.stp; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - import cn.dev33.satoken.SaManager; -import cn.dev33.satoken.annotation.SaCheckDisable; -import cn.dev33.satoken.annotation.SaCheckLogin; -import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.dev33.satoken.annotation.SaCheckRole; -import cn.dev33.satoken.annotation.SaCheckSafe; -import cn.dev33.satoken.annotation.SaMode; +import cn.dev33.satoken.annotation.*; import cn.dev33.satoken.config.SaCookieConfig; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.context.SaHolder; @@ -22,13 +11,7 @@ import cn.dev33.satoken.context.model.SaResponse; import cn.dev33.satoken.context.model.SaStorage; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.error.SaErrorCode; -import cn.dev33.satoken.exception.ApiDisabledException; -import cn.dev33.satoken.exception.DisableServiceException; -import cn.dev33.satoken.exception.NotLoginException; -import cn.dev33.satoken.exception.NotPermissionException; -import cn.dev33.satoken.exception.NotRoleException; -import cn.dev33.satoken.exception.NotSafeException; -import cn.dev33.satoken.exception.SaTokenException; +import cn.dev33.satoken.exception.*; import cn.dev33.satoken.fun.SaFunction; import cn.dev33.satoken.listener.SaTokenEventCenter; import cn.dev33.satoken.session.SaSession; @@ -37,60 +20,81 @@ import cn.dev33.satoken.strategy.SaStrategy; import cn.dev33.satoken.util.SaFoxUtil; import cn.dev33.satoken.util.SaTokenConsts; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + /** - * Sa-Token 权限认证,逻辑实现类 - * @author kong + * Sa-Token 权限认证,逻辑实现类 + * + *

+ * Sa-Token 的核心,框架大多数功能均由此类提供具体逻辑实现。 + *

+ * + * @author click33 + * @since <= 1.34.0 */ public class StpLogic { /** - * 账号类型,多账号体系时以此值区分,比如:login、user、admin + * 账号类型标识,多账号体系时(一个系统多套用户表)用此值区分具体要校验的是哪套用户,比如:login、user、admin */ public String loginType; /** - * 初始化StpLogic, 并指定账号类型 - * @param loginType 账号体系标识 + * 初始化 StpLogic, 并指定账号类型 + * + * @param loginType 账号类型标识 */ public StpLogic(String loginType) { this.loginType = loginType; - // 在 SaTokenManager 中记录下此 StpLogic,以便根据 LoginType 进行查找此对象 + + // 在 SaManager 中记录下此 StpLogic,以便后续根据 LoginType 进行查找此对象 SaManager.putStpLogic(this); } /** - * 获取当前 StpLogic 的账号类型 - * @return See Note + * 获取当前 StpLogic 账号类型标识 + * + * @return / */ public String getLoginType(){ return loginType; } /** - * 设置当前账号类型 - * @param loginType loginType + * 安全的重置当前账号类型 + * + * @param loginType 账号类型标识 * @return 对象自身 */ public StpLogic setLoginType(String loginType){ this.loginType = loginType; + + // 因为 loginType 变了,所以需要往 SaManager 中重新 put 一下 SaManager.putStpLogic(this); + return this; } - // ------------------- 获取token 相关 ------------------- + // ------------------- 获取 token 相关 ------------------- /** - * 返回token名称 - * @return 此StpLogic的token名称 + * 返回 token 名称,此名称在以下地方体现:Cookie 保存 token 时的名称、提交 token 时参数的名称、存储 token 时的 key 前缀 + * + * @return / */ public String getTokenName() { return splicingKeyTokenName(); } /** - * 创建一个TokenValue - * @param loginId loginId + * 为指定账号创建一个 token (只是把 token 创建出来,并不持久化存储) + * + * @param loginId 账号id * @param device 设备类型 * @param timeout 过期时间 * @param extraData 扩展信息 @@ -101,16 +105,18 @@ public class StpLogic { } /** - * 在当前会话写入当前TokenValue - * @param tokenValue token值 + * 在当前会话写入指定 token 值 + * + * @param tokenValue token 值 */ public void setTokenValue(String tokenValue){ setTokenValue(tokenValue, new SaLoginModel().setTimeout(getConfig().getTimeout())); } /** - * 在当前会话写入当前TokenValue - * @param tokenValue token值 + * 在当前会话写入指定 token 值 + * + * @param tokenValue token 值 * @param cookieTimeout Cookie存活时间(秒) */ public void setTokenValue(String tokenValue, int cookieTimeout){ @@ -118,54 +124,60 @@ public class StpLogic { } /** - * 在当前会话写入当前TokenValue - * @param tokenValue token值 + * 在当前会话写入指定 token 值 + * + * @param tokenValue token 值 * @param loginModel 登录参数 */ public void setTokenValue(String tokenValue, SaLoginModel loginModel){ - + + // 先判断一下,如果提供 token 为空,则不执行任何动作 if(SaFoxUtil.isEmpty(tokenValue)) { return; } - // 1. 将 Token 保存到 [存储器] 里 + // 1、将 token 写入到当前请求的 Storage 存储器里 setTokenValueToStorage(tokenValue); - // 2. 将 Token 保存到 [Cookie] 里 + // 2. 将 token 写入到当前会话的 Cookie 里 if (getConfig().getIsReadCookie()) { setTokenValueToCookie(tokenValue, loginModel.getCookieTimeout()); } - // 3. 将 Token 写入到响应头里 + // 3. 将 token 写入到当前请求的响应头中 if(loginModel.getIsWriteHeaderOrGlobalConfig()) { setTokenValueToResponseHeader(tokenValue); } } /** - * 将 Token 保存到 [Storage] 里 - * @param tokenValue token值 + * 将 token 写入到当前请求的 Storage 存储器里 + * + * @param tokenValue 要保存的 token 值 */ public void setTokenValueToStorage(String tokenValue){ - // 1. 将token保存到[存储器]里 + // 1、获取当前请求的 Storage 存储器 SaStorage storage = SaHolder.getStorage(); - - // 2. 如果打开了 Token 前缀模式,则拼接上前缀 + + // 2、保存 token + // - 如果没有配置前缀模式,直接保存 + // - 如果配置了前缀模式,则拼接上前缀保存 String tokenPrefix = getConfig().getTokenPrefix(); - if(SaFoxUtil.isEmpty(tokenPrefix) == false) { - storage.set(splicingKeyJustCreatedSave(), tokenPrefix + SaTokenConsts.TOKEN_CONNECTOR_CHAT + tokenValue); + if( SaFoxUtil.isEmpty(tokenPrefix) ) { + storage.set(splicingKeyJustCreatedSave(), tokenValue); } else { - storage.set(splicingKeyJustCreatedSave(), tokenValue); + storage.set(splicingKeyJustCreatedSave(), tokenPrefix + SaTokenConsts.TOKEN_CONNECTOR_CHAT + tokenValue); } - // 3. 写入 (无前缀) + // 3、以无前缀的方式再写入一次 storage.set(SaTokenConsts.JUST_CREATED_NOT_PREFIX, tokenValue); } /** - * 将 Token 保存到 [Cookie] 里 - * @param tokenValue token值 - * @param cookieTimeout Cookie存活时间(秒) + * 将 token 写入到当前会话的 Cookie 里 + * + * @param tokenValue token 值 + * @param cookieTimeout Cookie存活时间(单位:秒,填-1代表为内存Cookie,浏览器关闭后消失) */ public void setTokenValueToCookie(String tokenValue, int cookieTimeout){ SaCookieConfig cfg = getConfig().getCookie(); @@ -183,32 +195,37 @@ public class StpLogic { } /** - * 将 Token 写入到 [响应头] 里 - * @param tokenValue token值 + * 将 token 写入到当前请求的响应头中 + * + * @param tokenValue token 值 */ public void setTokenValueToResponseHeader(String tokenValue){ + // 写入到响应头 String tokenName = getTokenName(); SaResponse response = SaHolder.getResponse(); response.setHeader(tokenName, tokenValue); + + // 此处必须在响应头里指定 Access-Control-Expose-Headers: token-name,否则前端无法读取到这个响应头 response.addHeader(SaResponse.ACCESS_CONTROL_EXPOSE_HEADERS, tokenName); } /** - * 获取当前TokenValue + * 获取当前请求的 token 值 + * * @return 当前tokenValue */ public String getTokenValue(){ // 1. 获取 String tokenValue = getTokenValueNotCut(); - // 2. 如果打开了前缀模式,则裁剪掉 + // 2. 如果打开了前缀模式,则裁剪掉它 String tokenPrefix = getConfig().getTokenPrefix(); if(SaFoxUtil.isEmpty(tokenPrefix) == false) { - // 如果token并没有按照指定的前缀开头,则视为未提供token + // 如果 token 并没有按照指定的前缀开头,则视为未提供token if(SaFoxUtil.isEmpty(tokenValue) || tokenValue.startsWith(tokenPrefix + SaTokenConsts.TOKEN_CONNECTOR_CHAT) == false) { tokenValue = null; } else { - // 则裁剪掉前缀 + // 裁剪掉前缀 tokenValue = tokenValue.substring(tokenPrefix.length() + SaTokenConsts.TOKEN_CONNECTOR_CHAT.length()); } } @@ -218,40 +235,43 @@ public class StpLogic { } /** - * 获取当前TokenValue (不裁剪前缀) + * 获取当前请求的 token 值 (不裁剪前缀) + * * @return / */ public String getTokenValueNotCut(){ - // 0. 获取相应对象 + + // 获取相应对象 SaStorage storage = SaHolder.getStorage(); SaRequest request = SaHolder.getRequest(); SaTokenConfig config = getConfig(); String keyTokenName = getTokenName(); String tokenValue = null; - // 1. 尝试从Storage里读取 + // 1. 先尝试从 Storage 存储器里读取 if(storage.get(splicingKeyJustCreatedSave()) != null) { tokenValue = String.valueOf(storage.get(splicingKeyJustCreatedSave())); } - // 2. 尝试从请求体里面读取 + // 2. 再尝试从 请求体 里面读取 if(tokenValue == null && config.getIsReadBody()){ tokenValue = request.getParam(keyTokenName); } - // 3. 尝试从header里读取 + // 3. 再尝试从 header 头里读取 if(tokenValue == null && config.getIsReadHeader()){ tokenValue = request.getHeader(keyTokenName); } - // 4. 尝试从cookie里读取 + // 4. 最后尝试从 cookie 里读取 if(tokenValue == null && config.getIsReadCookie()){ tokenValue = request.getCookieValue(keyTokenName); } - // 5. 返回 + // 5. 至此,不管有没有读取到,都不再尝试了,直接返回 return tokenValue; } /** - * 获取当前上下文的 TokenValue(如果获取不到则抛出异常) + * 获取当前请求的 token 值,如果获取不到则抛出异常 + * * @return / */ public String getTokenValueNotNull(){ @@ -263,8 +283,9 @@ public class StpLogic { } /** - * 获取当前会话的Token信息 - * @return token信息 + * 获取当前会话的 token 参数信息 + * + * @return token 参数信息 */ public SaTokenInfo getTokenInfo() { SaTokenInfo info = new SaTokenInfo(); @@ -287,7 +308,8 @@ public class StpLogic { // --- 登录 /** - * 会话登录 + * 会话登录 + * * @param id 账号id,建议的类型:(long | int | String) */ public void login(Object id) { @@ -296,6 +318,7 @@ public class StpLogic { /** * 会话登录,并指定登录设备类型 + * * @param id 账号id,建议的类型:(long | int | String) * @param device 设备类型 */ @@ -304,27 +327,29 @@ public class StpLogic { } /** - * 会话登录,并指定是否 [记住我] + * 会话登录,并指定是否 [记住我] + * * @param id 账号id,建议的类型:(long | int | String) - * @param isLastingCookie 是否为持久Cookie + * @param isLastingCookie 是否为持久Cookie,值为 true 时记住我,值为 false 时关闭浏览器需要重新登录 */ public void login(Object id, boolean isLastingCookie) { login(id, new SaLoginModel().setIsLastingCookie(isLastingCookie)); } /** - * 会话登录,并指定此次登录token的有效期, 单位:秒 + * 会话登录,并指定此次登录 token 的有效期, 单位:秒 * * @param id 账号id,建议的类型:(long | int | String) - * @param timeout 此次登录token的有效期, 单位:秒 + * @param timeout 此次登录 token 的有效期, 单位:秒 */ public void login(Object id, long timeout) { login(id, new SaLoginModel().setTimeout(timeout)); } /** - * 会话登录,并指定所有登录参数Model - * @param id 登录id,建议的类型:(long | int | String) + * 会话登录,并指定所有登录参数 Model + * + * @param id 账号id,建议的类型:(long | int | String) * @param loginModel 此次登录的参数Model */ public void login(Object id, SaLoginModel loginModel) { @@ -336,8 +361,9 @@ public class StpLogic { } /** - * 创建指定账号id的登录会话 - * @param id 登录id,建议的类型:(long | int | String) + * 创建指定账号 id 的登录会话数据 + * + * @param id 账号id,建议的类型:(long | int | String) * @return 返回会话令牌 */ public String createLoginSession(Object id) { @@ -345,83 +371,92 @@ public class StpLogic { } /** - * 创建指定账号id的登录会话 - * @param id 登录id,建议的类型:(long | int | String) + * 创建指定账号 id 的登录会话数据 + * + * @param id 账号id,建议的类型:(long | int | String) * @param loginModel 此次登录的参数Model * @return 返回会话令牌 */ public String createLoginSession(Object id, SaLoginModel loginModel) { - // ------ 前置检查 - SaTokenException.throwByNull(id, "账号id不能为空", SaErrorCode.CODE_11002); + // 1、先检查一下,传入的账号id是否可用 + if(SaFoxUtil.isEmpty(id)) { + throw new SaTokenException("账号 id 不能为空").setCode(SaErrorCode.CODE_11002); + } - // ------ 1、初始化 loginModel + // 2、初始化 loginModel ,给一些参数补上默认值 SaTokenConfig config = getConfig(); loginModel.build(config); - - // ------ 2、分配一个可用的 Token + + // 3、给这个账号分配一个可用的 token String tokenValue = distUsableToken(id, loginModel); - // ------ 3. 获取 User-Session , 续期 + // 4、获取此账号的 Account-Session , 续期 SaSession session = getSessionByLoginId(id, true); session.updateMinTimeout(loginModel.getTimeout()); - // 在 User-Session 上记录token签名 + // 5、在 Account-Session 上记录本次登录的 token 签名 session.addTokenSign(tokenValue, loginModel.getDeviceOrDefault()); - - // ------ 4. 持久化其它数据 - // token -> id 映射关系 + + // 6、保存 token -> id 的映射关系,方便日后根据 token 找账号 id saveTokenToIdMapping(tokenValue, id, loginModel.getTimeout()); - // 写入 [token-last-activity] + // 7、写入这个 token 的最后活跃时间 token-last-activity setLastActivityToNow(tokenValue); - // $$ 发布事件:账号 xxx 登录成功 + // 8、$$ 发布全局事件:账号 xxx 登录成功 SaTokenEventCenter.doLogin(loginType, id, tokenValue, loginModel); - // 检查此账号会话数量是否超出最大值 + // 9、检查此账号会话数量是否超出最大值,如果超过,则按照登录时间顺序,把最开始登录的给注销掉 if(config.getMaxLoginCount() != -1) { logoutByMaxLoginCount(id, session, null, config.getMaxLoginCount()); } - // 返回Token + // 10、一切处理完毕,返回会话凭证 token return tokenValue; } /** - * 为指定账号id的登录操作,分配一个可用的 Token + * 为指定账号 id 的登录操作,分配一个可用的 token + * * @param id 账号id * @param loginModel 此次登录的参数Model - * @return 返回 Token + * @return 返回 token */ protected String distUsableToken(Object id, SaLoginModel loginModel) { - // 获取全局配置 + // 1、获取全局配置的 isConcurrent 参数 + // 如果配置为:不允许一个账号多地同时登录,则需要先将这个账号的历史登录会话标记为:被顶下线 Boolean isConcurrent = getConfig().getIsConcurrent(); - - // 如果配置为:不允许并发登录,则先将这个账号的历史登录标记为:被顶下线 if(isConcurrent == false) { replaced(id, loginModel.getDevice()); } - // 如果调用者预定了Token,则直接返回这个预定的 + // 2、如果调用者预定了要生成的 token,则直接返回这个预定的值,框架无需再操心了 if(SaFoxUtil.isNotEmpty(loginModel.getToken())) { return loginModel.getToken(); } - // 只有在配置为 [允许并发登录] 时,才尝试复用旧 Token,这样可以避免不必须的查询,节省开销 + // 3、只有在配置了 [ 允许一个账号多地同时登录 ] 时,才尝试复用旧 token,这样可以避免不必须的查询,节省开销 if(isConcurrent) { - // 全局配置是否允许复用旧 Token + + // 3.1、看看全局配置的 IsShare 参数,配置为 true 才是允许复用旧 token if(getConfigOfIsShare()) { + + // 根据账号id + 设备标识,尝试获取旧的 token String tokenValue = getTokenValueByLoginId(id, loginModel.getDeviceOrDefault()); - // 复用成功的话就直接返回,否则还是要继续新建Token + + // 如果有值,那就直接复用 if(SaFoxUtil.isNotEmpty(tokenValue)) { return tokenValue; } + + // 如果没值,那还是要继续往下走,尝试新建 token + // ↓↓↓ } } - // 如果代码走到此处,说明未能成功复用旧Token,需要新建Token + // 4、如果代码走到此处,说明未能成功复用旧 token,需要根据算法新建 token return SaStrategy.me.generateUniqueToken.execute( "token", getConfigOfMaxTryTimes(), @@ -437,28 +472,29 @@ public class StpLogic { // --- 注销 /** - * 会话注销 + * 在当前客户端会话注销 */ public void logout() { - // 如果连 Token 都没有,那么无需执行任何操作 + // 1、如果本次请求连 Token 都没有提交,那么它本身也不属于登录状态,此时无需执行任何操作 String tokenValue = getTokenValue(); if(SaFoxUtil.isEmpty(tokenValue)) { return; } - // 如果打开了 Cookie 模式,则把 Cookie 清除掉 + // 2、如果打开了 Cookie 模式,则先把 Cookie 数据清除掉 if(getConfig().getIsReadCookie()){ SaCookieConfig cookie = getConfig().getCookie(); SaHolder.getResponse().deleteCookie(getTokenName(), cookie.getPath(), cookie.getDomain()); } - // 从当前 [Storage存储器] 里删除 Token - SaHolder.getStorage().delete(splicingKeyJustCreatedSave()); + // 3、然后从当前 Storage 存储器里删除 Token + SaStorage storage = SaHolder.getStorage(); + storage.delete(splicingKeyJustCreatedSave()); - // 清除当前上下文的 [临时有效期check标记] - SaHolder.getStorage().delete(SaTokenConsts.TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY); + // 4、清除当前上下文的 [ 临时有效期 check 标记 ] + storage.delete(SaTokenConsts.TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY); - // 清除这个 Token 的相关信息 + // 5、清除这个 token 的其它相关信息 logoutByTokenValue(tokenValue); } @@ -475,86 +511,114 @@ public class StpLogic { * 会话注销,根据账号id 和 设备类型 * * @param loginId 账号id - * @param device 设备类型 (填null代表注销所有设备类型) + * @param device 设备类型 (填 null 代表注销该账号的所有设备类型) */ public void logout(Object loginId, String device) { + // 1、获取此账号的 Account-Session,上面记录了此账号的所有登录客户端数据 SaSession session = getSessionByLoginId(loginId, false); if(session != null) { + + // 2、遍历此账号所有从这个 device 设备上登录的客户端,清除相关数据 for (TokenSign tokenSign: session.tokenSignListCopyByDevice(device)) { - // 清理: token签名、token最后活跃时间 + + // 2.1、获取此客户端的 token 值 String tokenValue = tokenSign.getValue(); - session.removeTokenSign(tokenValue); - clearLastActivity(tokenValue); - // 删除Token-Id映射 & 清除Token-Session + + // 2.2、从 Account-Session 上清除 token 签名 + session.removeTokenSign(tokenValue); + + // 2.3、清除这个 token 的最后活跃时间记录 + clearLastActivity(tokenValue); + + // 2.4、清除 token -> id 的映射关系 deleteTokenToIdMapping(tokenValue); + + // 2.5、清除这个 token 的 Token-Session 对象 deleteTokenSession(tokenValue); - // $$ 发布事件:指定账号注销 + + // 2.6、$$ 发布事件:xx 账号的 xx 客户端注销了 SaTokenEventCenter.doLogout(loginType, loginId, tokenValue); } - // 注销 Session + + // 3、如果代码走到这里的时候,此账号已经没有客户端在登录了,则直接注销掉这个 Account-Session session.logoutByTokenSignCountToZero(); } } /** - * 会话注销,根据账号id 和 设备类型 和 最大同时在线数量 + * 如果指定账号 id、设备类型的登录客户端已经超过了指定数量,则按照登录时间顺序,把最开始登录的给注销掉 * * @param loginId 账号id - * @param session 此账号的 Session 对象,可填写null,框架将自动获取 - * @param device 设备类型 (填null代表注销所有设备类型) - * @param maxLoginCount 保留最近的几次登录 + * @param session 此账号的 Account-Session 对象,可填写 null,框架将自动获取 + * @param device 设备类型(填 null 代表注销此账号所有设备类型的登录) + * @param maxLoginCount 最大登录数量,超过此数量的将被注销 */ public void logoutByMaxLoginCount(Object loginId, SaSession session, String device, int maxLoginCount) { + + // 1、如果调用者提供的 Account-Session 对象为空,则我们先手动获取一下 if(session == null) { session = getSessionByLoginId(loginId, false); if(session == null) { return; } } + + // 2、获取这个账号指定设备类型下的所有登录客户端 List list = session.tokenSignListCopyByDevice(device); - // 遍历操作,只操作前n条 + + // 3、按照登录时间倒叙,超过 maxLoginCount 数量的,全部注销掉 for (int i = 0; i < list.size() - maxLoginCount; i++) { - // 清理: token签名、token最后活跃时间 + + // 3.1、获取此客户端的 token 值 String tokenValue = list.get(i).getValue(); - session.removeTokenSign(tokenValue); - clearLastActivity(tokenValue); - // 删除Token-Id映射 & 清除Token-Session + + // 3.2、从 Account-Session 上清除 token 签名 + session.removeTokenSign(tokenValue); + + // 3.3、清除这个 token 的最后活跃时间记录 + clearLastActivity(tokenValue); + + // 3.4、清除 token -> id 的映射关系 deleteTokenToIdMapping(tokenValue); + + // 3.5、清除这个 token 的 Token-Session 对象 deleteTokenSession(tokenValue); - // $$ 发布事件:指定账号注销 + + // 3.6、$$ 发布事件:xx 账号的 xx 客户端注销了 SaTokenEventCenter.doLogout(loginType, loginId, tokenValue); } - // 注销 Session + + // 4、如果代码走到这里的时候,此账号已经没有客户端在登录了,则直接注销掉这个 Account-Session session.logoutByTokenSignCountToZero(); } /** * 会话注销,根据指定 Token * - * @param tokenValue 指定token + * @param tokenValue 指定 token */ public void logoutByTokenValue(String tokenValue) { - // 1. 清理 token-last-activity - clearLastActivity(tokenValue); + // 1、清除这个 token 的最后活跃时间记录 + clearLastActivity(tokenValue); - // 2. 注销 Token-Session + // 2、清除这个 token 的 Token-Session 对象 deleteTokenSession(tokenValue); - // 3. 清理 token -> id 索引 + // 3、清除 token -> id 的映射关系 String loginId = getLoginIdNotHandle(tokenValue); if(loginId != null) { deleteTokenToIdMapping(tokenValue); } - // if. 无效 loginId 立即返回 - if(isValidLoginId(loginId) == false) { + // 4、判断一下:如果此 token 映射的是一个无效 loginId,则此处立即返回,不需要再往下处理了 + if( ! isValidLoginId(loginId) ) { return; } - // $$ 发布事件:某某Token注销下线了 + // 5、$$ 发布事件:某某账号的某某 token 注销下线了 SaTokenEventCenter.doLogout(loginType, loginId, tokenValue); - // 4. 清理User-Session上的token签名 & 尝试注销User-Session + // 6、清理这个账号的 Account-Session 上的 token 签名,并且尝试注销掉 Account-Session SaSession session = getSessionByLoginId(loginId, false); if(session != null) { session.removeTokenSign(tokenValue); @@ -564,7 +628,7 @@ public class StpLogic { /** * 踢人下线,根据账号id - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5

+ *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5

* * @param loginId 账号id */ @@ -574,53 +638,69 @@ public class StpLogic { /** * 踢人下线,根据账号id 和 设备类型 - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5

+ *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5

* * @param loginId 账号id - * @param device 设备类型 (填null代表踢出所有设备类型) + * @param device 设备类型 (填 null 代表踢出该账号的所有设备类型) */ public void kickout(Object loginId, String device) { + // 1、获取此账号的 Account-Session,上面记录了此账号的所有登录客户端数据 SaSession session = getSessionByLoginId(loginId, false); if(session != null) { + + // 2、遍历此账号所有从这个 device 设备上登录的客户端,清除相关数据 for (TokenSign tokenSign: session.tokenSignListCopyByDevice(device)) { - // 清理: token签名、token最后活跃时间 + + // 2.1、获取此客户端的 token 值 String tokenValue = tokenSign.getValue(); - session.removeTokenSign(tokenValue); - clearLastActivity(tokenValue); - // 将此 token 标记为已被踢下线 + + // 2.2、从 Account-Session 上清除 token 签名 + session.removeTokenSign(tokenValue); + + // 2.3、清除这个 token 的最后活跃时间记录 + clearLastActivity(tokenValue); + + // 2.4、将此 token 标记为:已被踢下线 updateTokenToIdMapping(tokenValue, NotLoginException.KICK_OUT); + + // 2.5、此处不需要清除它的 Token-Session 对象 + // deleteTokenSession(tokenValue); + + // 2.6、$$ 发布事件:xx 账号的 xx 客户端被踢下线了 SaTokenEventCenter.doKickout(loginType, loginId, tokenValue); } - // 注销 Session + + // 3、如果代码走到这里的时候,此账号已经没有客户端在登录了,则直接注销掉这个 Account-Session session.logoutByTokenSignCountToZero(); } } /** - * 踢人下线,根据指定 Token - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5

+ * 踢人下线,根据指定 token + *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5

* - * @param tokenValue 指定token + * @param tokenValue 指定 token */ public void kickoutByTokenValue(String tokenValue) { - // 1. 清理 token-last-activity + // 1、清除这个 token 的最后活跃时间记录 clearLastActivity(tokenValue); - // 2. 不注销 Token-Session + // 2、此处不需要清除它的 Token-Session 对象 + // deleteTokenSession(tokenValue); - // if. 无效 loginId 立即返回 + // 3、判断一下:如果此 token 映射的是一个无效 loginId,则此处立即返回,不需要再往下处理了 String loginId = getLoginIdNotHandle(tokenValue); - if(isValidLoginId(loginId) == false) { + if( ! isValidLoginId(loginId) ) { return; } - // 3. 给token打上标记:被踢下线 + // 4、将此 token 标记为:已被踢下线 updateTokenToIdMapping(tokenValue, NotLoginException.KICK_OUT); - // $$. 发布事件:某某Token被踢下线了 + // 5、$$. 发布事件:某某 token 被踢下线了 SaTokenEventCenter.doKickout(loginType, loginId, tokenValue); - // 4. 清理User-Session上的token签名 & 尝试注销User-Session + // 6、清理这个账号的 Account-Session 上的 token 签名,并且尝试注销掉 Account-Session SaSession session = getSessionByLoginId(loginId, false); if(session != null) { session.removeTokenSign(tokenValue); @@ -630,34 +710,54 @@ public class StpLogic { /** * 顶人下线,根据账号id 和 设备类型 - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-4

+ *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4

* * @param loginId 账号id - * @param device 设备类型 (填null代表顶替所有设备类型) + * @param device 设备类型 (填 null 代表顶替该账号的所有设备类型) */ public void replaced(Object loginId, String device) { + // 1、获取此账号的 Account-Session,上面记录了此账号的所有登录客户端数据 SaSession session = getSessionByLoginId(loginId, false); if(session != null) { + + // 2、遍历此账号所有从这个 device 设备上登录的客户端,清除相关数据 for (TokenSign tokenSign: session.tokenSignListCopyByDevice(device)) { - // 清理: token签名、token最后活跃时间 + + // 2.1、获取此客户端的 token 值 String tokenValue = tokenSign.getValue(); - session.removeTokenSign(tokenValue); - clearLastActivity(tokenValue); - // 将此 token 标记为已被顶替 + + // 2.2、从 Account-Session 上清除 token 签名 + session.removeTokenSign(tokenValue); + + // 2.3、清除这个 token 的最后活跃时间记录 + clearLastActivity(tokenValue); + + // 2.4、将此 token 标记为:已被顶下线 updateTokenToIdMapping(tokenValue, NotLoginException.BE_REPLACED); + + // 2.5、此处不需要清除它的 Token-Session 对象 + // deleteTokenSession(tokenValue); + + // 2.6、$$ 发布事件:xx 账号的 xx 客户端注销了 SaTokenEventCenter.doReplaced(loginType, loginId, tokenValue); } + + // 3、因为调用顶替下线时,一般都是在新客户端正在登录,所以此处不需要清除该账号的 Account-Session + // session.logoutByTokenSignCountToZero(); } } // ---- 会话查询 /** - * 当前会话是否已经登录 - * @return 是否已登录 + * 判断当前会话是否已经登录 + * + * @return 已登录返回 true,未登录返回 false */ public boolean isLogin() { - // 判断条件:不为null,并且不在异常项集合里 + // 判断条件: + // 1、获取到的 loginId 不为 null, + // 2、并且不在异常项集合里(此项在 getLoginIdDefaultNull() 方法里完成判断) return getLoginIdDefaultNull() != null; } @@ -665,105 +765,121 @@ public class StpLogic { * 检验当前会话是否已经登录,如未登录,则抛出异常 */ public void checkLogin() { - getLoginId(); + // 效果与 getLoginId() 相同,只是 checkLogin() 更加语义化一些 + getLoginId(); } /** - * 获取当前会话账号id, 如果未登录,则抛出异常 + * 获取当前会话账号id,如果未登录,则抛出异常 + * * @return 账号id */ public Object getLoginId() { - // 如果正在[临时身份切换], 则返回临时身份 + + // 1、先判断一下当前会话是否正在 [ 临时身份切换 ], 如果是则返回临时身份 if(isSwitch()) { return getSwitchLoginId(); } - // 如果获取不到token,则抛出: 无token + + // 2、如果前端没有提交 token,则抛出异常: 未能读取到有效 token String tokenValue = getTokenValue(); - if(tokenValue == null) { + if(SaFoxUtil.isEmpty(tokenValue)) { throw NotLoginException.newInstance(loginType, NotLoginException.NOT_TOKEN).setCode(SaErrorCode.CODE_11011); } - // 查找此token对应loginId, 如果找不到则抛出:无效token + + // 3、查找此 token 对应的 loginId,如果找不到则抛出:token 无效 String loginId = getLoginIdNotHandle(tokenValue); - if(loginId == null) { + if(SaFoxUtil.isEmpty(loginId)) { throw NotLoginException.newInstance(loginType, NotLoginException.INVALID_TOKEN, tokenValue).setCode(SaErrorCode.CODE_11012); } - // 如果是已经过期,则抛出:已经过期 + + // 4、如果这个 token 指向的是值是:过期标记,则抛出:token 已过期 if(loginId.equals(NotLoginException.TOKEN_TIMEOUT)) { throw NotLoginException.newInstance(loginType, NotLoginException.TOKEN_TIMEOUT, tokenValue).setCode(SaErrorCode.CODE_11013); } - // 如果是已经被顶替下去了, 则抛出:已被顶下线 + + // 5、如果这个 token 指向的是值是:被顶替标记,则抛出:token 已被顶下线 if(loginId.equals(NotLoginException.BE_REPLACED)) { throw NotLoginException.newInstance(loginType, NotLoginException.BE_REPLACED, tokenValue).setCode(SaErrorCode.CODE_11014); } - // 如果是已经被踢下线了, 则抛出:已被踢下线 + + // 6、如果这个 token 指向的是值是:被踢下线标记,则抛出:token 已被踢下线 if(loginId.equals(NotLoginException.KICK_OUT)) { throw NotLoginException.newInstance(loginType, NotLoginException.KICK_OUT, tokenValue).setCode(SaErrorCode.CODE_11015); } - // 检查是否已经 [临时过期] + + // 7、检查此 token 的最后活跃时间是否已经超过了 activity-timeout 的限制, + // 如果是则代表其已经临时过期,需要抛出:token 已过期 checkActivityTimeout(tokenValue); - // 如果配置了自动续签, 则: 更新[最后操作时间] + + // ------ 至此,loginId 已经是一个合法的值,代表当前会话是一个正常的登录状态了 + + // 8、如果配置了自动续签功能, 则: 更新这个 token 的最后活跃时间 (注意此处的续签是在续 activity-timeout,而非 timeout) if(getConfig().getAutoRenew()) { updateLastActivityToNow(tokenValue); } - // 至此,返回loginId + + // 9、返回 loginId return loginId; } /** - * 获取当前会话账号id, 如果未登录,则返回默认值 + * 获取当前会话账号id, 如果未登录,则返回默认值 + * * @param 返回类型 * @param defaultValue 默认值 * @return 登录id */ @SuppressWarnings("unchecked") - public T getLoginId(T defaultValue) { + public T getLoginId(T defaultValue) { + // 1、先正常获取一下当前会话的 loginId Object loginId = getLoginIdDefaultNull(); - // 如果loginId为null,则返回默认值 + + // 2、如果 loginId 为 null,则返回默认值 if(loginId == null) { return defaultValue; } - // 开始尝试类型转换,只尝试三种类型:int、long、String - if(defaultValue instanceof Integer) { - return (T)Integer.valueOf(loginId.toString()); - } - if(defaultValue instanceof Long) { - return (T)Long.valueOf(loginId.toString()); - } - if(defaultValue instanceof String) { - return (T)loginId.toString(); - } - return (T)loginId; + + // 3、不为 null,则开始尝试类型转换 + return (T)SaFoxUtil.getValueByType(loginId, defaultValue.getClass()); } /** - * 获取当前会话账号id, 如果未登录,则返回null + * 获取当前会话账号id, 如果未登录,则返回null + * * @return 账号id */ public Object getLoginIdDefaultNull() { - // 如果正在[临时身份切换] + + // 1、先判断一下当前会话是否正在 [ 临时身份切换 ], 如果是则返回临时身份 if(isSwitch()) { return getSwitchLoginId(); } - // 如果连token都是空的,则直接返回 + + // 2、如果前端连 token 都没有提交,则直接返回 null String tokenValue = getTokenValue(); if(tokenValue == null) { return null; } - // loginId为null或者在异常项里面,均视为未登录, 返回null + + // 3、根据 token 找到对应的 loginId,如果 loginId 为 null 或者属于异常标记里面,均视为未登录, 统一返回 null Object loginId = getLoginIdNotHandle(tokenValue); - if(isValidLoginId(loginId) == false) { + if( ! isValidLoginId(loginId) ) { return null; } - // 如果已经[临时过期] + + // 4、如果根本获取不到这个 token 的最后活跃时间数据,则也视为其:已经临时过期,也返回 null if(getTokenActivityTimeoutByToken(tokenValue) == SaTokenDao.NOT_VALUE_EXPIRE) { return null; } - // 执行到此,证明loginId已经是个正常的账号id了 + + // 5、执行到此,证明此 loginId 已经是个正常合法的账号id了,可以返回 return loginId; } /** - * 获取当前会话账号id, 并转换为String类型 + * 获取当前会话账号id, 并转换为 String 类型 + * * @return 账号id */ public String getLoginIdAsString() { @@ -771,7 +887,8 @@ public class StpLogic { } /** - * 获取当前会话账号id, 并转换为int类型 + * 获取当前会话账号id, 并转换为 int 类型 + * * @return 账号id */ public int getLoginIdAsInt() { @@ -779,7 +896,8 @@ public class StpLogic { } /** - * 获取当前会话账号id, 并转换为long类型 + * 获取当前会话账号id, 并转换为 long 类型 + * * @return 账号id */ public long getLoginIdAsLong() { @@ -787,27 +905,32 @@ public class StpLogic { } /** - * 获取指定Token对应的账号id,如果未登录,则返回 null + * 获取指定 token 对应的账号id,如果未登录,则返回 null + * * @param tokenValue token * @return 账号id */ public Object getLoginIdByToken(String tokenValue) { - // token为空时,直接返回null + + // 1、如果提供的 token 为空,则直接返回 null if(SaFoxUtil.isEmpty(tokenValue)) { return null; } - // loginId为无效值时,直接返回null + + // 2、查找此 token 对应的 loginId,如果找不到或找的到但属于无效值,则返回 null String loginId = getLoginIdNotHandle(tokenValue); - if(isValidLoginId(loginId) == false) { + if( ! isValidLoginId(loginId) ) { return null; } - // + + // 3、返回 return loginId; } /** - * 获取指定Token对应的账号id (不做任何特殊处理) - * @param tokenValue token值 + * 获取指定 token 对应的账号id (不做任何特殊处理) + * + * @param tokenValue token 值 * @return 账号id */ public String getLoginIdNotHandle(String tokenValue) { @@ -816,6 +939,7 @@ public class StpLogic { /** * 获取当前 Token 的扩展信息(此函数只在jwt模式下生效) + * * @param key 键值 * @return 对应的扩展数据 */ @@ -825,6 +949,7 @@ public class StpLogic { /** * 获取指定 Token 的扩展信息(此函数只在jwt模式下生效) + * * @param tokenValue 指定的 Token 值 * @param key 键值 * @return 对应的扩展数据 @@ -833,48 +958,59 @@ public class StpLogic { throw new ApiDisabledException().setCode(SaErrorCode.CODE_11031); } - - // ---- 其它操作 + // ---- 其它操作 + /** - * 判断一个 loginId 是否是有效的 + * 判断一个 loginId 是否是有效的 + * * @param loginId 账号id * @return / */ public boolean isValidLoginId(Object loginId) { + // 判断标准:不为null,且不在异常标记项里面 return loginId != null && !NotLoginException.ABNORMAL_LIST.contains(loginId.toString()); } + /** - * 删除 Token-Id 映射 - * @param tokenValue token值 - */ - public void deleteTokenToIdMapping(String tokenValue) { - getSaTokenDao().delete(splicingKeyTokenValue(tokenValue)); - } - /** - * 更改 Token 指向的 账号Id 值 - * @param tokenValue token值 - * @param loginId 新的账号Id值 - */ - public void updateTokenToIdMapping(String tokenValue, Object loginId) { - SaTokenException.throwBy(SaFoxUtil.isEmpty(loginId), "LoginId 不能为空", SaErrorCode.CODE_11003); - getSaTokenDao().update(splicingKeyTokenValue(tokenValue), loginId.toString()); - } - /** - * 存储 Token-Id 映射 - * @param tokenValue token值 - * @param loginId 账号id - * @param timeout 会话有效期 (单位: 秒) + * 存储 token - id 映射关系 + * + * @param tokenValue token值 + * @param loginId 账号id + * @param timeout 会话有效期 (单位: 秒) */ public void saveTokenToIdMapping(String tokenValue, Object loginId, long timeout) { getSaTokenDao().set(splicingKeyTokenValue(tokenValue), String.valueOf(loginId), timeout); } - - - - // ------------------- User-Session 相关 ------------------- + + /** + * 更改 token - id 映射关系 + * + * @param tokenValue token值 + * @param loginId 新的账号Id值 + */ + public void updateTokenToIdMapping(String tokenValue, Object loginId) { + // 先判断一下,是否传入了空值 + SaTokenException.throwBy(SaFoxUtil.isEmpty(loginId), "loginId 不能为空", SaErrorCode.CODE_11003); + + // 更新缓存中的 token 指向 + getSaTokenDao().update(splicingKeyTokenValue(tokenValue), loginId.toString()); + } + + /** + * 删除 token - id 映射 + * + * @param tokenValue token值 + */ + public void deleteTokenToIdMapping(String tokenValue) { + getSaTokenDao().delete(splicingKeyTokenValue(tokenValue)); + } + + + // ------------------- Account-Session 相关 ------------------- /** - * 获取指定key的Session, 如果Session尚未创建,isCreate=是否新建并返回 + * 获取指定 key 的 SaSession, 如果该 SaSession 尚未创建,isCreate = 是否立即新建并返回 + * * @param sessionId SessionId * @param isCreate 是否新建 * @param appendOperation 如果这个 SaSession 是新建的,则要追加执行的动作 @@ -901,7 +1037,8 @@ public class StpLogic { } /** - * 获取指定key的Session, 如果Session尚未创建,则返回null + * 获取指定 key 的 SaSession, 如果该 SaSession 尚未创建,则返回 null + * * @param sessionId SessionId * @return Session对象 */ @@ -910,14 +1047,16 @@ public class StpLogic { } /** - * 获取指定账号id的User-Session, 如果Session尚未创建,isCreate=是否新建并返回 + * 获取指定账号 id 的 Account-Session, 如果该 SaSession 尚未创建,isCreate=是否新建并返回 + * * @param loginId 账号id * @param isCreate 是否新建 - * @return Session对象 + * @return SaSession 对象 */ public SaSession getSessionByLoginId(Object loginId, boolean isCreate) { return getSessionBySessionId(splicingKeySession(loginId), isCreate, session -> { - // 设定这个 SaSession 的各种基础信息:类型、账号体系、账号id + // 这里是该 Account-Session 首次创建时才会被执行的方法: + // 设定这个 SaSession 的各种基础信息:类型、账号体系、账号id session.setType(SaTokenConsts.SESSION_TYPE__ACCOUNT); session.setLoginType(getLoginType()); session.setLoginId(loginId); @@ -925,16 +1064,18 @@ public class StpLogic { } /** - * 获取指定账号id的User-Session,如果Session尚未创建,则新建并返回 + * 获取指定账号 id 的 Account-Session,如果该 SaSession 尚未创建,则新建并返回 + * * @param loginId 账号id - * @return Session对象 + * @return SaSession 对象 */ public SaSession getSessionByLoginId(Object loginId) { return getSessionByLoginId(loginId, true); } /** - * 获取当前User-Session, 如果Session尚未创建,isCreate=是否新建并返回 + * 获取当前已登录账号的 Account-Session, 如果该 SaSession 尚未创建,isCreate=是否新建并返回 + * * @param isCreate 是否新建 * @return Session对象 */ @@ -943,7 +1084,8 @@ public class StpLogic { } /** - * 获取当前User-Session,如果Session尚未创建,则新建并返回 + * 获取当前已登录账号的 Account-Session,如果该 SaSession 尚未创建,则新建并返回 + * * @return Session对象 */ public SaSession getSession() { @@ -954,14 +1096,16 @@ public class StpLogic { // ------------------- Token-Session 相关 ------------------- /** - * 获取指定Token-Session,如果Session尚未创建,isCreate代表是否新建并返回 + * 获取指定 token 的 Token-Session,如果该 SaSession 尚未创建,isCreate代表是否新建并返回 + * * @param tokenValue token值 * @param isCreate 是否新建 * @return session对象 */ public SaSession getTokenSessionByToken(String tokenValue, boolean isCreate) { return getSessionBySessionId(splicingKeyTokenSession(tokenValue), isCreate, session -> { - // 设定这个 SaSession 的各种基础信息:类型、账号体系、Token 值 + // 这里是该 Token-Session 首次创建时才会被执行的方法: + // 设定这个 SaSession 的各种基础信息:类型、账号体系、Token 值 session.setType(SaTokenConsts.SESSION_TYPE__TOKEN); session.setLoginType(getLoginType()); session.setToken(tokenValue); @@ -969,7 +1113,8 @@ public class StpLogic { } /** - * 获取指定Token-Session,如果Session尚未创建,则新建并返回 + * 获取指定 token 的 Token-Session,如果该 SaSession 尚未创建,则新建并返回 + * * @param tokenValue Token值 * @return Session对象 */ @@ -978,30 +1123,32 @@ public class StpLogic { } /** - * 获取当前Token-Session,如果Session尚未创建,isCreate代表是否新建并返回 + * 获取当前 token 的 Token-Session,如果该 SaSession 尚未创建,isCreate代表是否新建并返回 + * * @param isCreate 是否新建 * @return Session对象 */ public SaSession getTokenSession(boolean isCreate) { - // 如果配置了:tokenSessionCheckLogin == true,则需要先校验当前是否登录 + // 1、如果配置了:tokenSessionCheckLogin == true,则需要先校验当前是否登录,未登录情况下不允许拿到 Token-Session if(getConfig().getTokenSessionCheckLogin()) { checkLogin(); } - // 如果前端没有提供 Token ,则直接返回 null + // 2、如果前端根本没有提供 Token ,则直接返回 null String tokenValue = getTokenValue(); if(SaFoxUtil.isEmpty(tokenValue)) { return null; } - // 代码至此:tokenSessionCheckLogin 校验通过、且 Token 有值 - // 现在根据前端提供的 Token 获取它对应的 Token-Session 对象(SaSession) + // 3、代码至此:tokenSessionCheckLogin 校验通过、且 Token 有值 + // 现在根据前端提供的 Token 获取它对应的 Token-Session 对象(SaSession) return getTokenSessionByToken(tokenValue, isCreate); } /** - * 获取当前Token-Session,如果Session尚未创建,则新建并返回 + * 获取当前 token 的 Token-Session,如果该 SaSession 尚未创建,则新建并返回 + * * @return Session对象 */ public SaSession getTokenSession() { @@ -1009,14 +1156,15 @@ public class StpLogic { } /** - * 获取当前匿名 Token-Session (可在未登录情况下使用的Token-Session) + * 获取当前匿名 Token-Session (可在未登录情况下使用的 Token-Session) + * * @param isCreate 在 Token-Session 尚未创建的情况是否新建并返回 * @return Token-Session 对象 */ public SaSession getAnonTokenSession(boolean isCreate) { /* * 情况1、如果调用方提供了有效 Token,则:直接返回其 [Token-Session] - * 情况2、如果调用方提供了无效 Token,或根本没有提供 Token,则:创建新 Token -> 返回 [Token-Session] + * 情况2、如果调用方提供了无效 Token,或根本没有提供 Token,则:创建新 Token -> 返回 [ Token-Session ] */ String tokenValue = getTokenValue(); @@ -1026,11 +1174,13 @@ public class StpLogic { * 条件2、能查出 LoginId */ if(SaFoxUtil.isNotEmpty(tokenValue)) { + // 符合条件1 SaSession session = getTokenSessionByToken(tokenValue, false); if(session != null) { return session; } + // 符合条件2 String loginId = getLoginIdNotHandle(tokenValue); if(isValidLoginId(loginId)) { @@ -1056,10 +1206,12 @@ public class StpLogic { } ); - // 写入 [最后操作时间] + // 写入此 token 的最后活跃时间 setLastActivityToNow(tokenValue); + // 在当前上下文写入此 TokenValue setTokenValue(tokenValue); + // 返回其 Token-Session 对象 return getTokenSessionByToken(tokenValue, isCreate); } @@ -1070,6 +1222,7 @@ public class StpLogic { /** * 获取当前匿名 Token-Session (可在未登录情况下使用的Token-Session) + * * @return Token-Session 对象 */ public SaSession getAnonTokenSession() { @@ -1077,104 +1230,126 @@ public class StpLogic { } /** - * 删除Token-Session + * 删除指定 token 的 Token-Session + * * @param tokenValue token值 */ public void deleteTokenSession(String tokenValue) { getSaTokenDao().delete(splicingKeyTokenSession(tokenValue)); } - - // ------------------- [临时有效期] 验证相关 ------------------- + + + // ------------------- Activity-Timeout 临时有效期 验证相关 ------------------- /** - * 写入指定token的 [最后操作时间] 为当前时间戳 + * 写入指定 token 的 [ 最后活跃时间 ] 为当前时间戳 + * * @param tokenValue 指定token */ protected void setLastActivityToNow(String tokenValue) { - // 如果token == null 或者 设置了[永不过期], 则立即返回 - if(tokenValue == null || isOpenActivityCheck() == false) { + // 如果提供的 token 或者 全局配置了 [ 永不过期 ], 则立即返回,无需操作 + if(SaFoxUtil.isEmpty(tokenValue) || ! isOpenActivityCheck() ) { return; } - // 将[最后操作时间]标记为当前时间戳 + + // 将[ 最后活跃时间 ] 标记为当前时间戳 getSaTokenDao().set(splicingKeyLastActivityTime(tokenValue), String.valueOf(System.currentTimeMillis()), getConfig().getTimeout()); } /** - * 清除指定 Token 的 [最后操作时间记录] - * @param tokenValue 指定token + * 清除指定 Token 的 [ 最后活跃时间记录 ] + * + * @param tokenValue 指定 token */ protected void clearLastActivity(String tokenValue) { - // 如果token == null 或者 设置了[永不过期], 则立即返回 - if(tokenValue == null || isOpenActivityCheck() == false) { - return; - } - // 删除[最后操作时间] + // 如果提供的 token 或者 全局配置了 [ 永不过期 ], 则立即返回,无需操作 + if(SaFoxUtil.isEmpty(tokenValue) || ! isOpenActivityCheck() ) { + return; + } + + // 删除 [ 最后活跃时间 ] getSaTokenDao().delete(splicingKeyLastActivityTime(tokenValue)); } /** - * 检查指定token 是否已经[临时过期],如果已经过期则抛出异常 + * 检查指定token 是否已经 [ 临时过期 ],如果已经过期则抛出异常 + * * @param tokenValue 指定token */ public void checkActivityTimeout(String tokenValue) { - // 如果token == null 或者 设置了[永不过期], 则立即返回 - if(tokenValue == null || isOpenActivityCheck() == false) { - return; - } - // 如果本次请求已经有了[检查标记], 则立即返回 + + // 如果提供的 token 或者 全局配置了 [ 永不过期 ], 则立即返回,无需操作 + if(SaFoxUtil.isEmpty(tokenValue) || ! isOpenActivityCheck() ) { + return; + } + + // 如果本次请求已经有了 [ 检查标记 ],说明已经校验过了,此时无需重复校验,立即返回 SaStorage storage = SaHolder.getStorage(); if(storage.get(SaTokenConsts.TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY) != null) { return; } - // ------------ 验证是否已经 [临时过期] - // 获取 [临时剩余时间] + + // ------------ 下面开始校验这个 token 是否已经 [ 临时过期 ] + + // 1、获取这个 token 的临时剩余时间 long timeout = getTokenActivityTimeoutByToken(tokenValue); - // -1 代表此token已经被设置永不过期,无须继续验证 - if(timeout == SaTokenDao.NEVER_EXPIRE) { - return; - } - // -2 代表已过期,抛出异常 - if(timeout == SaTokenDao.NOT_VALUE_EXPIRE) { - throw NotLoginException.newInstance(loginType, NotLoginException.TOKEN_TIMEOUT, tokenValue).setCode(SaErrorCode.CODE_11016); - } + + // 2、值为 -1 代表此 token 已经被设置永不过期,无须继续验证 + if(timeout == SaTokenDao.NEVER_EXPIRE) { + // 此句代码含义参考最下面 + storage.set(SaTokenConsts.TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY, true); + return; + } + + // 3、值为 -2 代表已临时过期,此时需要抛出异常 + if(timeout == SaTokenDao.NOT_VALUE_EXPIRE) { + throw NotLoginException.newInstance(loginType, NotLoginException.TOKEN_TIMEOUT, tokenValue).setCode(SaErrorCode.CODE_11016); + } // --- 至此,验证已通过 - // 打上[检查标记],标记一下当前请求已经通过验证,避免一次请求多次验证,造成不必要的性能消耗 + // 4、打上 [ 检查标记 ],标记一下当前请求已经通过校验,避免一次请求多次校验,造成不必要的性能消耗 storage.set(SaTokenConsts.TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY, true); } /** - * 检查当前token 是否已经[临时过期],如果已经过期则抛出异常 + * 检查当前 token 是否已经[临时过期],如果已经过期则抛出异常 */ public void checkActivityTimeout() { checkActivityTimeout(getTokenValue()); } /** - * 续签指定token:(将 [最后操作时间] 更新为当前时间戳) + * 续签指定 token:将这个 token 的 [ 最后活跃时间 ] 更新为当前时间戳 + * * @param tokenValue 指定token */ public void updateLastActivityToNow(String tokenValue) { - // 如果token == null 或者 设置了[永不过期], 则立即返回 - if(tokenValue == null || isOpenActivityCheck() == false) { - return; - } - getSaTokenDao().update(splicingKeyLastActivityTime(tokenValue), String.valueOf(System.currentTimeMillis())); + // 如果提供的 token 或者 全局配置了 [ 永不过期 ], 则立即返回,无需操作 + if(SaFoxUtil.isEmpty(tokenValue) || ! isOpenActivityCheck() ) { + return; + } + + // 将这个 token 的 [ 最后活跃时间 ] 更新为当前时间戳 + getSaTokenDao().update(splicingKeyLastActivityTime(tokenValue), String.valueOf(System.currentTimeMillis())); } /** - * 续签当前token:(将 [最后操作时间] 更新为当前时间戳) - *

请注意: 即使token已经 [临时过期] 也可续签成功, - * 如果此场景下需要提示续签失败,可在此之前调用 checkActivityTimeout() 强制检查是否过期即可

+ * 续签当前 token:(将 [最后操作时间] 更新为当前时间戳) + *

+ * 请注意: 即使 token 已经 [ 临时过期 ] 也可续签成功, + * 如果此场景下需要提示续签失败,可在此之前调用 checkActivityTimeout() 强制检查是否过期即可 + *

*/ public void updateLastActivityToNow() { updateLastActivityToNow(getTokenValue()); } - - // ------------------- 过期时间相关 ------------------- + + + // ------------------- 过期时间相关 ------------------- /** - * 获取当前登录者的 token 剩余有效时间 (单位: 秒) + * 获取当前会话 token 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * * @return token剩余有效时间 */ public long getTokenTimeout() { @@ -1182,7 +1357,8 @@ public class StpLogic { } /** - * 获取指定 loginId 的 token 剩余有效时间 (单位: 秒) + * 获取指定账号 id 的 token 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * * @param loginId 指定loginId * @return token剩余有效时间 */ @@ -1191,7 +1367,8 @@ public class StpLogic { } /** - * 获取当前登录者的 User-Session 剩余有效时间 (单位: 秒) + * 获取当前登录账号的 Account-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * * @return token剩余有效时间 */ public long getSessionTimeout() { @@ -1199,7 +1376,8 @@ public class StpLogic { } /** - * 获取指定 loginId 的 User-Session 剩余有效时间 (单位: 秒) + * 获取指定账号 id 的 Account-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * * @param loginId 指定loginId * @return token剩余有效时间 */ @@ -1208,7 +1386,8 @@ public class StpLogic { } /** - * 获取当前 Token-Session 剩余有效时间 (单位: 秒) + * 获取当前 token 的 Token-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * * @return token剩余有效时间 */ public long getTokenSessionTimeout() { @@ -1216,110 +1395,132 @@ public class StpLogic { } /** - * 获取指定 Token-Session 剩余有效时间 (单位: 秒) + * 获取指定 token 的 Token-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * * @param tokenValue 指定token - * @return token剩余有效时间 + * @return token 剩余有效时间 */ public long getTokenSessionTimeoutByTokenValue(String tokenValue) { return getSaTokenDao().getSessionTimeout(splicingKeyTokenSession(tokenValue)); } /** - * 获取当前 token [临时过期] 剩余有效时间 (单位: 秒) - * @return token [临时过期] 剩余有效时间 + * 获取当前 token [ 临时过期 ] 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * + * @return / */ public long getTokenActivityTimeout() { return getTokenActivityTimeoutByToken(getTokenValue()); } /** - * 获取指定 token [临时过期] 剩余有效时间 (单位: 秒) - * @param tokenValue 指定token - * @return token[临时过期]剩余有效时间 + * 获取指定 token [ 临时过期 ] 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * + * @param tokenValue 指定 token + * @return / */ public long getTokenActivityTimeoutByToken(String tokenValue) { - // 如果token为null , 则返回 -2 - if(tokenValue == null) { + + // 如果提供的 token 为 null,则返回 -2 + if(SaFoxUtil.isEmpty(tokenValue)) { return SaTokenDao.NOT_VALUE_EXPIRE; } - // 如果设置了永不过期, 则返回 -1 - if(isOpenActivityCheck() == false) { + + // 如果全局配置了永不过期, 则返回 -1 + if( ! isOpenActivityCheck() ) { return SaTokenDao.NEVER_EXPIRE; } - // ------ 开始查询 - // 获取相关数据 + + // ------ 开始查询 + + // 1、先获取这个 token 的最后活跃时间,13位时间戳 String keyLastActivityTime = splicingKeyLastActivityTime(tokenValue); String lastActivityTimeString = getSaTokenDao().get(keyLastActivityTime); - // 查不到,返回-2 + + // 2、如果查不到,返回-2 if(lastActivityTimeString == null) { return SaTokenDao.NOT_VALUE_EXPIRE; } - // 计算相差时间 + + // 3、计算最后活跃时间 和 此时此刻 的时间差 + // 计算公式为: (当前时间 - 最后活跃时间) / 1000 long lastActivityTime = Long.parseLong(lastActivityTimeString); long apartSecond = (System.currentTimeMillis() - lastActivityTime) / 1000; - long timeout = getConfig().getActivityTimeout() - apartSecond; - // 如果 < 0, 代表已经过期 ,返回-2 + + // 4、校验这个时间差是否超过了允许的值 + // 计算公式为: 允许的最大时间差 - 实际时间差,判断是否 < 0, 如果是则代表已经临时过期 ,返回-2 + long timeout = getConfig().getActivityTimeout() - apartSecond; if(timeout < 0) { return SaTokenDao.NOT_VALUE_EXPIRE; - } - return timeout; + } else { + // 否则代表没过期,返回剩余有效时间 + return timeout; + } } /** - * 对当前 Token 的 timeout 值进行续期 + * 对当前 token 的 timeout 值进行续期 + * * @param timeout 要修改成为的有效时间 (单位: 秒) */ public void renewTimeout(long timeout) { - // 续期 db 数据 + // 1、续期缓存数据 String tokenValue = getTokenValue(); renewTimeout(tokenValue, timeout); - // 续期客户端Cookie有效期 + // 2、续期客户端 Cookie 有效期 if(getConfig().getIsReadCookie()) { + // 如果 timeout = -1,代表永久,但是一般浏览器不支持永久 Cookie,所以此处设置为 int 最大值 + // 如果 timeout 大于 int 最大值,会造成数据溢出,所以也要将其设置为 int 最大值 + if(timeout == SaTokenDao.NEVER_EXPIRE || timeout > Integer.MAX_VALUE) { + timeout = Integer.MAX_VALUE; + } setTokenValueToCookie(tokenValue, (int)timeout); } } /** - * 对指定 Token 的 timeout 值进行续期 - * @param tokenValue 指定token - * @param timeout 要修改成为的有效时间 (单位: 秒) + * 对指定 token 的 timeout 值进行续期 + * + * @param tokenValue 指定 token + * @param timeout 要修改成为的有效时间 (单位: 秒,填 -1 代表要续为永久有效) */ public void renewTimeout(String tokenValue, long timeout) { - // Token 指向的 LoginId 异常时,不进行任何操作 + // 1、如果 token 指向的 loginId 为空,或者属于异常项时,不进行任何操作 Object loginId = getLoginIdByToken(tokenValue); if(loginId == null) { return; } - - SaTokenDao dao = getSaTokenDao(); - - // 续期 Token 有效期 + + // 2、续期此 token 本身的有效期 (改 ttl) + SaTokenDao dao = getSaTokenDao(); dao.updateTimeout(splicingKeyTokenValue(tokenValue), timeout); - // 续期 Token-Session 有效期 + // 3、续期此 token 的 Token-Session 有效期 SaSession tokenSession = getTokenSessionByToken(tokenValue, false); if(tokenSession != null) { tokenSession.updateTimeout(timeout); } - // 续期指向的 User-Session 有效期 + // 4、续期此 token 指向的账号的 Account-Session 有效期 getSessionByLoginId(loginId).updateMinTimeout(timeout); - // Token-Activity 活跃检查相关 + // 5、更新此 token 的最后活跃时间 if(isOpenActivityCheck()) { dao.updateTimeout(splicingKeyLastActivityTime(tokenValue), timeout); } - // 通知更新超时事件 + // 6、$$ 发布事件:某某 token 被续期了 SaTokenEventCenter.doRenewTimeout(tokenValue, loginId, timeout); } - - // ------------------- 角色验证操作 ------------------- + + + // ------------------- 角色认证操作 ------------------- /** - * 获取:当前账号的角色集合 + * 获取:当前账号的角色集合 + * * @return / */ public List getRoleList() { @@ -1331,7 +1532,8 @@ public class StpLogic { } /** - * 获取:指定账号的角色集合 + * 获取:指定账号的角色集合 + * * @param loginId 指定账号id * @return / */ @@ -1340,7 +1542,8 @@ public class StpLogic { } /** - * 判断:当前账号是否拥有指定角色, 返回true或false + * 判断:当前账号是否拥有指定角色, 返回 true 或 false + * * @param role 角色 * @return / */ @@ -1349,7 +1552,8 @@ public class StpLogic { } /** - * 判断:指定账号是否含有指定角色标识, 返回true或false + * 判断:指定账号是否含有指定角色标识, 返回 true 或 false + * * @param loginId 账号id * @param role 角色标识 * @return 是否含有指定角色标识 @@ -1359,7 +1563,8 @@ public class StpLogic { } /** - * 判断:当前账号是否含有指定角色标识 [指定多个,必须全部验证通过] + * 判断:当前账号是否含有指定角色标识 [ 指定多个,必须全部验证通过 ] + * * @param roleArray 角色标识数组 * @return true或false */ @@ -1373,7 +1578,8 @@ public class StpLogic { } /** - * 判断:当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] + * 判断:当前账号是否含有指定角色标识 [ 指定多个,只要其一验证通过即可 ] + * * @param roleArray 角色标识数组 * @return true或false */ @@ -1387,7 +1593,8 @@ public class StpLogic { } /** - * 校验:当前账号是否含有指定角色标识, 如果验证未通过,则抛出异常: NotRoleException + * 校验:当前账号是否含有指定角色标识, 如果验证未通过,则抛出异常: NotRoleException + * * @param role 角色标识 */ public void checkRole(String role) { @@ -1397,14 +1604,15 @@ public class StpLogic { } /** - * 校验:当前账号是否含有指定角色标识 [指定多个,必须全部验证通过] + * 校验:当前账号是否含有指定角色标识 [ 指定多个,必须全部验证通过 ] + * * @param roleArray 角色标识数组 */ public void checkRoleAnd(String... roleArray){ // 先获取当前是哪个账号id Object loginId = getLoginId(); - // 如果没有指定权限,那么直接跳过 + // 如果没有指定要校验的角色,那么直接跳过 if(roleArray == null || roleArray.length == 0) { return; } @@ -1419,7 +1627,8 @@ public class StpLogic { } /** - * 校验:当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] + * 校验:当前账号是否含有指定角色标识 [ 指定多个,只要其一验证通过即可 ] + * * @param roleArray 角色标识数组 */ public void checkRoleOr(String... roleArray){ @@ -1445,10 +1654,11 @@ public class StpLogic { } - // ------------------- 权限验证操作 ------------------- + // ------------------- 权限认证操作 ------------------- /** - * 获取:当前账号的权限码集合 + * 获取:当前账号的权限码集合 + * * @return / */ public List getPermissionList() { @@ -1460,7 +1670,8 @@ public class StpLogic { } /** - * 获取:指定账号的权限码集合 + * 获取:指定账号的权限码集合 + * * @param loginId 指定账号id * @return / */ @@ -1469,7 +1680,8 @@ public class StpLogic { } /** - * 判断:当前账号是否含有指定权限, 返回true或false + * 判断:当前账号是否含有指定权限, 返回 true 或 false + * * @param permission 权限码 * @return 是否含有指定权限 */ @@ -1478,8 +1690,9 @@ public class StpLogic { } /** - * 判断:指定账号id是否含有指定权限, 返回true或false - * @param loginId 账号id + * 判断:指定账号 id 是否含有指定权限, 返回 true 或 false + * + * @param loginId 账号 id * @param permission 权限码 * @return 是否含有指定权限 */ @@ -1488,7 +1701,8 @@ public class StpLogic { } /** - * 判断:当前账号是否含有指定权限, [指定多个,必须全部具有] + * 判断:当前账号是否含有指定权限 [ 指定多个,必须全部具有 ] + * * @param permissionArray 权限码数组 * @return true 或 false */ @@ -1502,7 +1716,8 @@ public class StpLogic { } /** - * 判断:当前账号是否含有指定权限 [指定多个,只要其一验证通过即可] + * 判断:当前账号是否含有指定权限 [ 指定多个,只要其一验证通过即可 ] + * * @param permissionArray 权限码数组 * @return true 或 false */ @@ -1516,7 +1731,8 @@ public class StpLogic { } /** - * 校验:当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException + * 校验:当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException + * * @param permission 权限码 */ public void checkPermission(String permission) { @@ -1526,7 +1742,8 @@ public class StpLogic { } /** - * 校验:当前账号是否含有指定权限 [指定多个,必须全部验证通过] + * 校验:当前账号是否含有指定权限 [ 指定多个,必须全部验证通过 ] + * * @param permissionArray 权限码数组 */ public void checkPermissionAnd(String... permissionArray){ @@ -1548,14 +1765,15 @@ public class StpLogic { } /** - * 校验:当前账号是否含有指定权限 [指定多个,只要其一验证通过即可] + * 校验:当前账号是否含有指定权限 [ 指定多个,只要其一验证通过即可 ] + * * @param permissionArray 权限码数组 */ public void checkPermissionOr(String... permissionArray){ // 先获取当前是哪个账号id Object loginId = getLoginId(); - // 如果没有指定权限,那么直接跳过 + // 如果没有指定要校验的权限,那么直接跳过 if(permissionArray == null || permissionArray.length == 0) { return; } @@ -1578,9 +1796,12 @@ public class StpLogic { // ------------------- id 反查 token 相关操作 ------------------- /** - * 获取指定账号id的tokenValue - *

在配置为允许并发登录时,此方法只会返回队列的最后一个token, - * 如果你需要返回此账号id的所有token,请调用 getTokenValueListByLoginId + * 获取指定账号 id 的 token + *

+ * 在配置为允许并发登录时,此方法只会返回队列的最后一个 token, + * 如果你需要返回此账号 id 的所有 token,请调用 getTokenValueListByLoginId + *

+ * * @param loginId 账号id * @return token值 */ @@ -1589,11 +1810,14 @@ public class StpLogic { } /** - * 获取指定账号id指定设备类型端的tokenValue - *

在配置为允许并发登录时,此方法只会返回队列的最后一个token, - * 如果你需要返回此账号id的所有token,请调用 getTokenValueListByLoginId + * 获取指定账号 id 指定设备类型端的 token + *

+ * 在配置为允许并发登录时,此方法只会返回队列的最后一个 token, + * 如果你需要返回此账号 id 的所有 token,请调用 getTokenValueListByLoginId + *

+ * * @param loginId 账号id - * @param device 设备类型,填null代表不限设备类型 + * @param device 设备类型,填 null 代表不限设备类型 * @return token值 */ public String getTokenValueByLoginId(Object loginId, String device) { @@ -1602,27 +1826,30 @@ public class StpLogic { } /** - * 获取指定账号id的tokenValue集合 + * 获取指定账号 id 的 token 集合 + * * @param loginId 账号id - * @return 此loginId的所有相关token + * @return 此 loginId 的所有相关 token */ public List getTokenValueListByLoginId(Object loginId) { return getTokenValueListByLoginId(loginId, null); } /** - * 获取指定账号id指定设备类型端的tokenValue 集合 + * 获取指定账号 id 指定设备类型端的 token 集合 + * * @param loginId 账号id - * @param device 设备类型,填null代表不限设备类型 - * @return 此loginId的所有相关token + * @param device 设备类型,填 null 代表不限设备类型 + * @return 此 loginId 的所有登录 token */ public List getTokenValueListByLoginId(Object loginId, String device) { - // 如果session为null的话直接返回空集合 + // 如果该账号的 Account-Session 为 null,说明此账号尚没有客户端在登录,此时返回空集合 SaSession session = getSessionByLoginId(loginId, false); if(session == null) { return Collections.emptyList(); } - // 遍历解析 + + // 遍历解析,按照设备类型进行筛选 List tokenSignList = session.tokenSignListCopy(); List tokenValueList = new ArrayList<>(); for (TokenSign tokenSign : tokenSignList) { @@ -1635,30 +1862,38 @@ public class StpLogic { /** * 返回当前会话的登录设备类型 + * * @return 当前令牌的登录设备类型 */ public String getLoginDevice() { - // 如果没有token,直接返回 null + // 1、如果前端没有提交 token,直接返回 null String tokenValue = getTokenValue(); if(tokenValue == null) { return null; } - // 如果还未登录,直接返回 null + + // 2、如果当前会话还未登录,直接返回 null if(!isLogin()) { return null; } - // 如果session为null的话直接返回 null + + // 3、获取当前账号的 Account-Session SaSession session = getSessionByLoginId(getLoginIdDefaultNull(), false); + + // 4、为 null 说明尚未登录,当然也就不存在什么设备类型,直接返回 null if(session == null) { return null; } - // 遍历解析 + + // 5、遍历 Account-Session 上的客户端 token 列表,寻找当前 token 对应的设备类型 List tokenSignList = session.tokenSignListCopy(); for (TokenSign tokenSign : tokenSignList) { if(tokenSign.getValue().equals(tokenValue)) { return tokenSign.getDevice(); } } + + // 6、没有找到,还是返回 null return null; } @@ -1666,7 +1901,8 @@ public class StpLogic { // ------------------- 会话管理 ------------------- /** - * 根据条件查询Token + * 根据条件查询缓存中所有的 token + * * @param keyword 关键字 * @param start 开始处索引 * @param size 获取数量 (-1代表一直获取到末尾) @@ -1679,7 +1915,8 @@ public class StpLogic { } /** - * 根据条件查询SessionId + * 根据条件查询缓存中所有的 SessionId + * * @param keyword 关键字 * @param start 开始处索引 * @param size 获取数量 (-1代表一直获取到末尾) @@ -1692,7 +1929,8 @@ public class StpLogic { } /** - * 根据条件查询Token专属Session的Id + * 根据条件查询缓存中所有的 Token-Session-Id + * * @param keyword 关键字 * @param start 开始处索引 * @param size 获取数量 (-1代表一直获取到末尾) @@ -1708,7 +1946,8 @@ public class StpLogic { // ------------------- 注解鉴权 ------------------- /** - * 根据注解(@SaCheckLogin)鉴权 + * 根据注解 ( @SaCheckLogin ) 鉴权 + * * @param at 注解对象 */ public void checkByAnnotation(SaCheckLogin at) { @@ -1716,7 +1955,8 @@ public class StpLogic { } /** - * 根据注解(@SaCheckRole)鉴权 + * 根据注解 ( @SaCheckRole ) 鉴权 + * * @param at 注解对象 */ public void checkByAnnotation(SaCheckRole at) { @@ -1729,7 +1969,8 @@ public class StpLogic { } /** - * 根据注解(@SaCheckPermission)鉴权 + * 根据注解 ( @SaCheckPermission ) 鉴权 + * * @param at 注解对象 */ public void checkByAnnotation(SaCheckPermission at) { @@ -1741,11 +1982,11 @@ public class StpLogic { this.checkPermissionOr(permissionArray); } } catch (NotPermissionException e) { - // 权限认证未通过,再开始角色认证 + // 权限认证校验未通过,再开始角色认证校验 if(at.orRole().length > 0) { for (String role : at.orRole()) { String[] rArr = SaFoxUtil.convertStringToArray(role); - // 某一项role认证通过,则可以提前退出了,代表通过 + // 某一项 role 认证通过,则可以提前退出了,代表通过 if(hasRoleAnd(rArr)) { return; } @@ -1756,7 +1997,8 @@ public class StpLogic { } /** - * 根据注解(@SaCheckSafe)鉴权 + * 根据注解 ( @SaCheckSafe ) 鉴权 + * * @param at 注解对象 */ public void checkByAnnotation(SaCheckSafe at) { @@ -1764,7 +2006,7 @@ public class StpLogic { } /** - * 根据注解(@SaCheckDisable)鉴权 + * 根据注解 ( @SaCheckDisable ) 鉴权 * * @param at 注解对象 */ @@ -1800,7 +2042,8 @@ public class StpLogic { } /** - * 校验:指定账号是否已被封禁,如果被封禁则抛出异常 + * 校验:指定账号是否已被封禁,如果被封禁则抛出异常 + * * @param loginId 账号id */ public void checkDisable(Object loginId) { @@ -1809,6 +2052,7 @@ public class StpLogic { /** * 获取:指定账号剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁) + * * @param loginId 账号id * @return / */ @@ -1818,6 +2062,7 @@ public class StpLogic { /** * 解封:指定账号 + * * @param loginId 账号id */ public void untieDisable(Object loginId) { @@ -1830,6 +2075,7 @@ public class StpLogic { /** * 封禁:指定账号的指定服务 *

此方法不会直接将此账号id踢下线,如需封禁后立即掉线,请追加调用 StpUtil.logout(id) + * * @param loginId 指定账号id * @param service 指定服务 * @param time 封禁时间, 单位: 秒 (-1=永久封禁) @@ -1839,7 +2085,8 @@ public class StpLogic { } /** - * 判断:指定账号的指定服务 是否已被封禁 (true=已被封禁, false=未被封禁) + * 判断:指定账号的指定服务 是否已被封禁(true=已被封禁, false=未被封禁) + * * @param loginId 账号id * @param service 指定服务 * @return / @@ -1849,7 +2096,8 @@ public class StpLogic { } /** - * 校验:指定账号 指定服务 是否已被封禁,如果被封禁则抛出异常 + * 校验:指定账号 指定服务 是否已被封禁,如果被封禁则抛出异常 + * * @param loginId 账号id * @param services 指定服务,可以指定多个 */ @@ -1863,6 +2111,7 @@ public class StpLogic { /** * 获取:指定账号 指定服务 剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁) + * * @param loginId 账号id * @param service 指定服务 * @return see note @@ -1873,18 +2122,21 @@ public class StpLogic { /** * 解封:指定账号、指定服务 + * * @param loginId 账号id * @param services 指定服务,可以指定多个 */ public void untieDisable(Object loginId, String... services) { - // 空值检查 + + // 先检查提供的参数是否有效 if(SaFoxUtil.isEmpty(loginId)) { throw new SaTokenException("请提供要解禁的账号").setCode(SaErrorCode.CODE_11062); } if(services == null || services.length == 0) { throw new SaTokenException("请提供要解禁的服务").setCode(SaErrorCode.CODE_11063); } - + + // 遍历逐个解禁 for (String service : services) { // 解封 getSaTokenDao().delete(splicingKeyDisable(loginId, service)); @@ -1898,7 +2150,8 @@ public class StpLogic { // ------------------- 阶梯封禁 ------------------- /** - * 封禁:指定账号,并指定封禁等级 + * 封禁:指定账号,并指定封禁等级 + * * @param loginId 指定账号id * @param level 指定封禁等级 * @param time 封禁时间, 单位: 秒 (-1=永久封禁) @@ -1908,14 +2161,15 @@ public class StpLogic { } /** - * 封禁:指定账号的指定服务,并指定封禁等级 + * 封禁:指定账号的指定服务,并指定封禁等级 + * * @param loginId 指定账号id * @param service 指定封禁服务 * @param level 指定封禁等级 * @param time 封禁时间, 单位: 秒 (-1=永久封禁) */ public void disableLevel(Object loginId, String service, int level, long time) { - // 空值检查 + // 先检查提供的参数是否有效 if(SaFoxUtil.isEmpty(loginId)) { throw new SaTokenException("请提供要封禁的账号").setCode(SaErrorCode.CODE_11062); } @@ -1926,7 +2180,7 @@ public class StpLogic { throw new SaTokenException("封禁等级不可以小于最小值:" + SaTokenConsts.MIN_DISABLE_LEVEL).setCode(SaErrorCode.CODE_11064); } - // 标注为已被封禁 + // 打上封禁标记 getSaTokenDao().set(splicingKeyDisable(loginId, service), String.valueOf(level), time); // $$ 发布事件 @@ -1953,12 +2207,13 @@ public class StpLogic { * @return / */ public boolean isDisableLevel(Object loginId, String service, int level) { - // s1. 检查是否被封禁 + // 1、先前置检查一下这个账号是否被封禁了 int disableLevel = getDisableLevel(loginId, service); if(disableLevel == SaTokenConsts.NOT_DISABLE_LEVEL) { return false; } - // s2. 检测被封禁的等级是否达到指定级别 + + // 2、再判断被封禁的等级是否达到了指定级别 return disableLevel >= level; } @@ -1980,15 +2235,17 @@ public class StpLogic { * @param level 封禁等级 (只有 封禁等级 ≥ 此值 才会抛出异常) */ public void checkDisableLevel(Object loginId, String service, int level) { - // s1. 检查是否被封禁 + // 1、先前置检查一下这个账号是否被封禁了 String value = getSaTokenDao().get(splicingKeyDisable(loginId, service)); if(SaFoxUtil.isEmpty(value)) { return; } - // s2. 检测被封禁的等级是否达到指定级别 + + // 2、再判断被封禁的等级是否达到了指定级别 Integer disableLevel = SaFoxUtil.getValueByType(value, int.class); if(disableLevel >= level) { - throw new DisableServiceException(loginType, loginId, service, disableLevel, level, getDisableTime(loginId, service)).setCode(SaErrorCode.CODE_11061); + throw new DisableServiceException(loginType, loginId, service, disableLevel, level, getDisableTime(loginId, service)) + .setCode(SaErrorCode.CODE_11061); } } @@ -2010,20 +2267,22 @@ public class StpLogic { * @return / */ public int getDisableLevel(Object loginId, String service) { - // q1. 如果尚未被封禁,则返回-2 + // 1、判断是否被封禁了,如果尚未被封禁,返回-2 String value = getSaTokenDao().get(splicingKeyDisable(loginId, service)); if(SaFoxUtil.isEmpty(value)) { return SaTokenConsts.NOT_DISABLE_LEVEL; } - // q2. 转为 int 类型 + + // 2、转为 int 类型返回 return SaFoxUtil.getValueByType(value, int.class); } - // ------------------- 身份切换 ------------------- + // ------------------- 临时身份切换 ------------------- /** - * 临时切换身份为指定账号id + * 临时切换身份为指定账号id + * * @param loginId 指定loginId */ public void switchTo(Object loginId) { @@ -2038,23 +2297,26 @@ public class StpLogic { } /** - * 当前是否正处于[身份临时切换]中 - * @return 是否正处于[身份临时切换]中 + * 判断当前请求是否正处于 [ 身份临时切换 ] 中 + * + * @return / */ public boolean isSwitch() { return SaHolder.getStorage().get(splicingKeySwitch()) != null; } /** - * 返回[身份临时切换]的loginId - * @return 返回[身份临时切换]的loginId + * 返回 [ 身份临时切换 ] 的 loginId + * + * @return / */ public Object getSwitchLoginId() { return SaHolder.getStorage().get(splicingKeySwitch()); } /** - * 在一个代码段里方法内,临时切换身份为指定账号id + * 在一个 lambda 代码段里,临时切换身份为指定账号id,lambda 结束后自动恢复 + * * @param loginId 指定账号id * @param function 要执行的方法 */ @@ -2073,7 +2335,8 @@ public class StpLogic { // ------------------- 二级认证 ------------------- /** - * 在当前会话 开启二级认证 + * 在当前会话 开启二级认证 + * * @param safeTime 维持时间 (单位: 秒) */ public void openSafe(long safeTime) { @@ -2081,24 +2344,26 @@ public class StpLogic { } /** - * 在当前会话 开启二级认证 + * 在当前会话 开启二级认证 + * * @param service 业务标识 * @param safeTime 维持时间 (单位: 秒) */ public void openSafe(String service, long safeTime) { - // 开启二级认证前必须处于登录状态 + // 1、开启二级认证前必须处于登录状态,否则抛出异常 checkLogin(); - // 写入key + // 2、写入指定的 可以 标记,打开二级认证 String tokenValue = getTokenValueNotNull(); getSaTokenDao().set(splicingKeySafe(tokenValue, service), SaTokenConsts.SAFE_AUTH_SAVE_VALUE, safeTime); - // $$ 发布事件 + // 3、$$ 发布事件,某某 token 令牌开启了二级认证 SaTokenEventCenter.doOpenSafe(loginType, tokenValue, service, safeTime); } /** - * 当前会话 是否处于二级认证时间内 + * 判断:当前会话是否处于二级认证时间内 + * * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时 */ public boolean isSafe() { @@ -2106,7 +2371,8 @@ public class StpLogic { } /** - * 当前会话 是否处于二级认证时间内 + * 判断:当前会话 是否处于指定业务的二级认证时间内 + * * @param service 业务标识 * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时 */ @@ -2115,31 +2381,33 @@ public class StpLogic { } /** - * 指定 Token 是否处于二级认证时间内 + * 判断:指定 token 是否处于二级认证时间内 + * * @param tokenValue Token 值 * @param service 业务标识 * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时 */ public boolean isSafe(String tokenValue, String service) { - // 如果 Token 为空,则直接视为未认证 + // 1、如果提供的 Token 为空,则直接视为未认证 if(SaFoxUtil.isEmpty(tokenValue)) { return false; } - // 如果DB中可以查询出指定的键值,则代表已认证,否则视为未认证 + // 2、如果缓存中可以查询出指定的键值,则代表已认证,否则视为未认证 String value = getSaTokenDao().get(splicingKeySafe(tokenValue, service)); return !(SaFoxUtil.isEmpty(value)); } /** - * 检查当前会话是否已通过二级认证,如未通过则抛出异常 + * 校验:当前会话是否已通过二级认证,如未通过则抛出异常 */ public void checkSafe() { checkSafe(SaTokenConsts.DEFAULT_SAFE_AUTH_SERVICE); } /** - * 检查当前会话是否已通过二级认证,如未通过则抛出异常 + * 校验:检查当前会话是否已通过指定业务的二级认证,如未通过则抛出异常 + * * @param service 业务标识 */ public void checkSafe(String service) { @@ -2150,7 +2418,8 @@ public class StpLogic { } /** - * 获取当前会话的二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证) + * 获取:当前会话的二级认证剩余有效时间(单位: 秒, 返回-2代表尚未通过二级认证) + * * @return 剩余有效时间 */ public long getSafeTime() { @@ -2158,18 +2427,19 @@ public class StpLogic { } /** - * 获取当前会话的二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证) + * 获取:当前会话的二级认证剩余有效时间(单位: 秒, 返回-2代表尚未通过二级认证) + * * @param service 业务标识 * @return 剩余有效时间 */ public long getSafeTime(String service) { - // 如果上下文中没有 Token,则直接视为未认证 + // 1、如果前端没有提交 Token,则直接视为未认证 String tokenValue = getTokenValue(); if(SaFoxUtil.isEmpty(tokenValue)) { return SaTokenDao.NOT_VALUE_EXPIRE; } - // 从DB中查询这个key的剩余有效期 + // 2、从缓存中查询这个 key 的剩余有效期 return getSaTokenDao().getTimeout(splicingKeySafe(tokenValue, service)); } @@ -2181,28 +2451,30 @@ public class StpLogic { } /** - * 在当前会话 结束二级认证 + * 在当前会话 结束指定业务标识的二级认证 + * * @param service 业务标识 */ public void closeSafe(String service) { - // 如果上下文中没有 Token,则无需任何操作 + // 1、如果前端没有提交 Token,则无需任何操作 String tokenValue = getTokenValue(); if(SaFoxUtil.isEmpty(tokenValue)) { return; } - // 删除 key + // 2、删除 key getSaTokenDao().delete(splicingKeySafe(tokenValue, service)); - // $$ 发布事件 + // 3、$$ 发布事件,某某 token 令牌关闭了二级认证 SaTokenEventCenter.doCloseSafe(loginType, tokenValue, service); } - // ------------------- 返回相应key ------------------- + // ------------------- 拼接相应key ------------------- /** - * 拼接key:客户端 tokenName + * 获取:客户端 tokenName + * * @return key */ public String splicingKeyTokenName() { @@ -2210,7 +2482,8 @@ public class StpLogic { } /** - * 拼接key: tokenValue 持久化 token-id + * 拼接: 在保存 token - id 映射关系时,应该使用的key + * * @param tokenValue token值 * @return key */ @@ -2219,7 +2492,8 @@ public class StpLogic { } /** - * 拼接key: Session 持久化 + * 拼接: 在保存 Account-Session 时,应该使用的 key + * * @param loginId 账号id * @return key */ @@ -2228,7 +2502,8 @@ public class StpLogic { } /** - * 拼接key: tokenValue的Token-Session + * 拼接:在保存 Token-Session 时,应该使用的 key + * * @param tokenValue token值 * @return key */ @@ -2237,7 +2512,8 @@ public class StpLogic { } /** - * 拼接key: 指定token的最后操作时间 持久化 + * 拼接: 在保存 token 最后活跃时间时,应该使用的 key + * * @param tokenValue token值 * @return key */ @@ -2246,7 +2522,8 @@ public class StpLogic { } /** - * 在进行身份切换时,使用的存储key + * 拼接:在进行临时身份切换时,应该使用的 key + * * @return key */ public String splicingKeySwitch() { @@ -2254,7 +2531,8 @@ public class StpLogic { } /** - * 如果token为本次请求新创建的,则以此字符串为key存储在当前request中 + * 如果 token 为本次请求新创建的,则以此字符串为 key 存储在当前 request 中 + * * @return key */ public String splicingKeyJustCreatedSave() { @@ -2263,7 +2541,8 @@ public class StpLogic { } /** - * 拼接key: 账号封禁 + * 拼接: 在保存服务封禁标记时,应该使用的 key + * * @param loginId 账号id * @param service 具体封禁的服务 * @return key @@ -2273,7 +2552,8 @@ public class StpLogic { } /** - * 拼接key: 二级认证 + * 拼接: 在保存业务二级认证标记时,应该使用的 key + * * @param tokenValue 要认证的 Token * @param service 要认证的业务标识 * @return key @@ -2285,19 +2565,21 @@ public class StpLogic { } - // ------------------- Bean对象代理 ------------------- + // ------------------- Bean 对象、字段代理 ------------------- /** - * 返回全局配置对象 + * 返回全局配置对象 + * * @return / */ public SaTokenConfig getConfig() { - // 为什么再次代理一层? 为某些极端业务场景下[需要不同StpLogic不同配置]提供便利 + // 为什么再次代理一层? 为某些业务场景下需要 [ 不同StpLogic不同配置 ] 提供便利 return SaManager.getConfig(); } /** - * 返回全局配置对象的isShare属性 + * 返回全局配置对象的 isShare 属性 + * * @return / */ public boolean getConfigOfIsShare() { @@ -2305,7 +2587,8 @@ public class StpLogic { } /** - * 返回全局配置是否开启了Token 活跃校验 + * 返回全局配置是否开启了Token 活跃校验 + * * @return / */ public boolean isOpenActivityCheck() { @@ -2314,6 +2597,7 @@ public class StpLogic { /** * 返回全局配置的 Cookie 保存时长,单位:秒 (根据全局 timeout 计算) + * * @return Cookie 应该保存的时长 */ public int getConfigOfCookieTimeout() { @@ -2326,6 +2610,7 @@ public class StpLogic { /** * 返回全局配置的 maxTryTimes 值,在每次创建 token 时,对其唯一性测试的最高次数(-1=不测试) + * * @return / */ public int getConfigOfMaxTryTimes() { @@ -2334,7 +2619,8 @@ public class StpLogic { /** - * 返回持久化对象 + * 返回持久化对象 + * * @return / */ public SaTokenDao getSaTokenDao() { @@ -2343,6 +2629,7 @@ public class StpLogic { /** * 判断:集合中是否包含指定元素(模糊匹配) + * * @param list 集合 * @param element 元素 * @return / diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java index b4bededa..4fa52f39 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java @@ -1,40 +1,44 @@ package cn.dev33.satoken.stp; -import java.util.List; - import cn.dev33.satoken.SaManager; import cn.dev33.satoken.fun.SaFunction; import cn.dev33.satoken.listener.SaTokenEventCenter; import cn.dev33.satoken.session.SaSession; +import java.util.List; + /** - * Sa-Token 权限认证工具类 - * @author kong + * Sa-Token 权限认证工具类 + * + * @author click33 + * @since <= 1.34.0 */ public class StpUtil { private StpUtil() {} /** - * 账号类型标识 + * 多账号体系下的类型标识 */ public static final String TYPE = "login"; /** - * 底层的 StpLogic 对象 + * 底层使用的 StpLogic 对象 */ public static StpLogic stpLogic = new StpLogic(TYPE); /** * 获取当前 StpLogic 的账号类型 - * @return See Note + * + * @return / */ public static String getLoginType(){ return stpLogic.getLoginType(); } /** - * 重置 StpLogic 对象 + * 安全的重置 StpLogic 对象 + * *
1、更改此账户的 StpLogic 对象 *
2、put 到全局 StpLogic 集合中 *
3、发送日志 @@ -42,19 +46,20 @@ public class StpUtil { * @param newStpLogic / */ public static void setStpLogic(StpLogic newStpLogic) { - // 重置此账户的 StpLogic 对象 + // 1、重置此账户的 StpLogic 对象 stpLogic = newStpLogic; - // 添加到全局 StpLogic 集合中 - // 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic + // 2、添加到全局 StpLogic 集合中 + // 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic SaManager.putStpLogic(newStpLogic); - // $$ 全局事件 + // 3、$$ 发布事件:更新了 stpLogic 对象 SaTokenEventCenter.doSetStpLogic(stpLogic); } /** * 获取 StpLogic 对象 + * * @return / */ public static StpLogic getStpLogic() { @@ -62,44 +67,49 @@ public class StpUtil { } - // ------------------- 获取token 相关 ------------------- + // ------------------- 获取 token 相关 ------------------- /** - * 返回token名称 - * @return 此StpLogic的token名称 + * 返回 token 名称,此名称在以下地方体现:Cookie 保存 token 时的名称、提交 token 时参数的名称、存储 token 时的 key 前缀 + * + * @return / */ public static String getTokenName() { return stpLogic.getTokenName(); } - /** - * 在当前会话写入当前TokenValue - * @param tokenValue token值 - */ + /** + * 在当前会话写入指定 token 值 + * + * @param tokenValue token 值 + */ public static void setTokenValue(String tokenValue){ stpLogic.setTokenValue(tokenValue); } - - /** - * 在当前会话写入当前TokenValue - * @param tokenValue token值 - * @param cookieTimeout Cookie存活时间(秒) - */ + + /** + * 在当前会话写入指定 token 值 + * + * @param tokenValue token 值 + * @param cookieTimeout Cookie存活时间(秒) + */ public static void setTokenValue(String tokenValue, int cookieTimeout){ stpLogic.setTokenValue(tokenValue, cookieTimeout); } - /** - * 在当前会话写入当前TokenValue - * @param tokenValue token值 - * @param loginModel 登录参数 - */ + /** + * 在当前会话写入指定 token 值 + * + * @param tokenValue token 值 + * @param loginModel 登录参数 + */ public static void setTokenValue(String tokenValue, SaLoginModel loginModel){ stpLogic.setTokenValue(tokenValue, loginModel); } /** - * 获取当前TokenValue + * 获取当前请求的 token 值 + * * @return 当前tokenValue */ public static String getTokenValue() { @@ -107,7 +117,8 @@ public class StpUtil { } /** - * 获取当前TokenValue (不裁剪前缀) + * 获取当前请求的 token 值 (不裁剪前缀) + * * @return / */ public static String getTokenValueNotCut(){ @@ -115,8 +126,9 @@ public class StpUtil { } /** - * 获取当前会话的Token信息 - * @return token信息 + * 获取当前会话的 token 参数信息 + * + * @return token 参数信息 */ public static SaTokenInfo getTokenInfo() { return stpLogic.getTokenInfo(); @@ -126,9 +138,10 @@ public class StpUtil { // ------------------- 登录相关操作 ------------------- // --- 登录 - + /** - * 会话登录 + * 会话登录 + * * @param id 账号id,建议的类型:(long | int | String) */ public static void login(Object id) { @@ -137,6 +150,7 @@ public class StpUtil { /** * 会话登录,并指定登录设备类型 + * * @param id 账号id,建议的类型:(long | int | String) * @param device 设备类型 */ @@ -147,27 +161,27 @@ public class StpUtil { /** * 会话登录,并指定是否 [记住我] * - * @param id 账号id,建议的类型:(long | int | String) - * @param isLastingCookie 是否为持久Cookie + * @param id 账号id,建议的类型:(long | int | String) + * @param isLastingCookie 是否为持久Cookie,值为 true 时记住我,值为 false 时关闭浏览器需要重新登录 */ public static void login(Object id, boolean isLastingCookie) { stpLogic.login(id, isLastingCookie); } /** - * 会话登录,并指定此次登录token的有效期, 单位:秒 + * 会话登录,并指定此次登录 token 的有效期, 单位:秒 * * @param id 账号id,建议的类型:(long | int | String) - * @param timeout 此次登录token的有效期, 单位:秒 (如未指定,自动取全局配置的timeout值) + * @param timeout 此次登录 token 的有效期, 单位:秒 */ public static void login(Object id, long timeout) { stpLogic.login(id, timeout); } /** - * 会话登录,并指定所有登录参数Model + * 会话登录,并指定所有登录参数 Model * - * @param id 登录id,建议的类型:(long | int | String) + * @param id 账号id,建议的类型:(long | int | String) * @param loginModel 此次登录的参数Model */ public static void login(Object id, SaLoginModel loginModel) { @@ -175,28 +189,30 @@ public class StpUtil { } /** - * 创建指定账号id的登录会话 - * @param id 登录id,建议的类型:(long | int | String) - * @return 返回会话令牌 + * 创建指定账号 id 的登录会话数据 + * + * @param id 账号id,建议的类型:(long | int | String) + * @return 返回会话令牌 */ public static String createLoginSession(Object id) { return stpLogic.createLoginSession(id); } - + /** - * 创建指定账号id的登录会话 - * @param id 登录id,建议的类型:(long | int | String) + * 创建指定账号 id 的登录会话数据 + * + * @param id 账号id,建议的类型:(long | int | String) * @param loginModel 此次登录的参数Model - * @return 返回会话令牌 + * @return 返回会话令牌 */ public static String createLoginSession(Object id, SaLoginModel loginModel) { return stpLogic.createLoginSession(id, loginModel); } // --- 注销 - - /** - * 会话注销 + + /** + * 在当前客户端会话注销 */ public static void logout() { stpLogic.logout(); @@ -204,7 +220,8 @@ public class StpUtil { /** * 会话注销,根据账号id - * @param loginId 账号id + * + * @param loginId 账号id */ public static void logout(Object loginId) { stpLogic.logout(loginId); @@ -212,146 +229,154 @@ public class StpUtil { /** * 会话注销,根据账号id 和 设备类型 - * + * * @param loginId 账号id - * @param device 设备类型 (填null代表注销所有设备类型) + * @param device 设备类型 (填 null 代表注销该账号的所有设备类型) */ public static void logout(Object loginId, String device) { stpLogic.logout(loginId, device); } - + /** * 会话注销,根据指定 Token - * - * @param tokenValue 指定token + * + * @param tokenValue 指定 token */ public static void logoutByTokenValue(String tokenValue) { stpLogic.logoutByTokenValue(tokenValue); } - + /** * 踢人下线,根据账号id - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5

- * + *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5

+ * * @param loginId 账号id */ public static void kickout(Object loginId) { stpLogic.kickout(loginId); } - + /** * 踢人下线,根据账号id 和 设备类型 - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5

- * - * @param loginId 账号id - * @param device 设备类型 (填null代表踢出所有设备类型) + *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5

+ * + * @param loginId 账号id + * @param device 设备类型 (填 null 代表踢出该账号的所有设备类型) */ public static void kickout(Object loginId, String device) { stpLogic.kickout(loginId, device); } /** - * 踢人下线,根据指定 Token - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-5

- * - * @param tokenValue 指定token + * 踢人下线,根据指定 token + *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5

+ * + * @param tokenValue 指定 token */ public static void kickoutByTokenValue(String tokenValue) { stpLogic.kickoutByTokenValue(tokenValue); } - + /** * 顶人下线,根据账号id 和 设备类型 - *

当对方再次访问系统时,会抛出NotLoginException异常,场景值=-4

- * - * @param loginId 账号id - * @param device 设备类型 (填null代表顶替所有设备类型) + *

当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4

+ * + * @param loginId 账号id + * @param device 设备类型 (填 null 代表顶替该账号的所有设备类型) */ public static void replaced(Object loginId, String device) { stpLogic.replaced(loginId, device); } - - - // 查询相关 - /** - * 当前会话是否已经登录 - * @return 是否已登录 - */ + // 会话查询 + + /** + * 判断当前会话是否已经登录 + * + * @return 已登录返回 true,未登录返回 false + */ public static boolean isLogin() { return stpLogic.isLogin(); } - /** - * 检验当前会话是否已经登录,如未登录,则抛出异常 - */ + /** + * 检验当前会话是否已经登录,如未登录,则抛出异常 + */ public static void checkLogin() { stpLogic.checkLogin(); } - /** - * 获取当前会话账号id, 如果未登录,则抛出异常 - * @return 账号id - */ + /** + * 获取当前会话账号id,如果未登录,则抛出异常 + * + * @return 账号id + */ public static Object getLoginId() { return stpLogic.getLoginId(); } - /** - * 获取当前会话账号id, 如果未登录,则返回默认值 + /** + * 获取当前会话账号id, 如果未登录,则返回默认值 + * * @param 返回类型 * @param defaultValue 默认值 - * @return 登录id + * @return 登录id */ public static T getLoginId(T defaultValue) { return stpLogic.getLoginId(defaultValue); } - /** - * 获取当前会话账号id, 如果未登录,则返回null - * @return 账号id + /** + * 获取当前会话账号id, 如果未登录,则返回null + * + * @return 账号id */ public static Object getLoginIdDefaultNull() { return stpLogic.getLoginIdDefaultNull(); } - /** - * 获取当前会话账号id, 并转换为String类型 - * @return 账号id + /** + * 获取当前会话账号id, 并转换为 String 类型 + * + * @return 账号id */ public static String getLoginIdAsString() { return stpLogic.getLoginIdAsString(); } - /** - * 获取当前会话账号id, 并转换为int类型 - * @return 账号id + /** + * 获取当前会话账号id, 并转换为 int 类型 + * + * @return 账号id */ public static int getLoginIdAsInt() { return stpLogic.getLoginIdAsInt(); } /** - * 获取当前会话账号id, 并转换为long类型 - * @return 账号id + * 获取当前会话账号id, 并转换为 long 类型 + * + * @return 账号id */ public static long getLoginIdAsLong() { return stpLogic.getLoginIdAsLong(); } - /** - * 获取指定Token对应的账号id,如果未登录,则返回 null - * @param tokenValue token - * @return 账号id - */ + /** + * 获取指定 token 对应的账号id,如果未登录,则返回 null + * + * @param tokenValue token + * @return 账号id + */ public static Object getLoginIdByToken(String tokenValue) { return stpLogic.getLoginIdByToken(tokenValue); } /** * 获取当前 Token 的扩展信息(此函数只在jwt模式下生效) + * * @param key 键值 - * @return 对应的扩展数据 + * @return 对应的扩展数据 */ public static Object getExtra(String key) { return stpLogic.getExtra(key); @@ -359,57 +384,63 @@ public class StpUtil { /** * 获取指定 Token 的扩展信息(此函数只在jwt模式下生效) - * @param tokenValue 指定的 Token 值 - * @param key 键值 - * @return 对应的扩展数据 + * + * @param tokenValue 指定的 Token 值 + * @param key 键值 + * @return 对应的扩展数据 */ public static Object getExtra(String tokenValue, String key) { return stpLogic.getExtra(tokenValue, key); } - // ------------------- User-Session 相关 ------------------- + // ------------------- Account-Session 相关 ------------------- - /** - * 获取指定账号id的Session, 如果Session尚未创建,isCreate=是否新建并返回 + /** + * 获取指定账号 id 的 Account-Session, 如果该 SaSession 尚未创建,isCreate=是否新建并返回 + * * @param loginId 账号id * @param isCreate 是否新建 - * @return Session对象 + * @return SaSession 对象 */ public static SaSession getSessionByLoginId(Object loginId, boolean isCreate) { return stpLogic.getSessionByLoginId(loginId, isCreate); } - /** - * 获取指定key的Session, 如果Session尚未创建,则返回null + /** + * 获取指定 key 的 SaSession, 如果该 SaSession 尚未创建,则返回 null + * * @param sessionId SessionId - * @return Session对象 + * @return Session对象 */ public static SaSession getSessionBySessionId(String sessionId) { return stpLogic.getSessionBySessionId(sessionId); } - /** - * 获取指定账号id的Session,如果Session尚未创建,则新建并返回 - * @param loginId 账号id - * @return Session对象 + /** + * 获取指定账号 id 的 Account-Session,如果该 SaSession 尚未创建,则新建并返回 + * + * @param loginId 账号id + * @return SaSession 对象 */ public static SaSession getSessionByLoginId(Object loginId) { return stpLogic.getSessionByLoginId(loginId); } - /** - * 获取当前会话的Session, 如果Session尚未创建,isCreate=是否新建并返回 + /** + * 获取当前已登录账号的 Account-Session, 如果该 SaSession 尚未创建,isCreate=是否新建并返回 + * * @param isCreate 是否新建 - * @return Session对象 + * @return Session对象 */ public static SaSession getSession(boolean isCreate) { return stpLogic.getSession(isCreate); } - /** - * 获取当前会话的Session,如果Session尚未创建,则新建并返回 - * @return Session对象 + /** + * 获取当前已登录账号的 Account-Session,如果该 SaSession 尚未创建,则新建并返回 + * + * @return Session对象 */ public static SaSession getSession() { return stpLogic.getSession(); @@ -417,47 +448,52 @@ public class StpUtil { // ------------------- Token-Session 相关 ------------------- - - /** - * 获取指定Token-Session,如果Session尚未创建,则新建并返回 + + /** + * 获取指定 token 的 Token-Session,如果该 SaSession 尚未创建,则新建并返回 + * * @param tokenValue Token值 - * @return Session对象 + * @return Session对象 */ public static SaSession getTokenSessionByToken(String tokenValue) { return stpLogic.getTokenSessionByToken(tokenValue); } - - /** - * 获取当前Token-Session,如果Session尚未创建,则新建并返回 - * @return Session对象 + + /** + * 获取当前 token 的 Token-Session,如果该 SaSession 尚未创建,则新建并返回 + * + * @return Session对象 */ public static SaSession getTokenSession() { return stpLogic.getTokenSession(); } - /** + /** * 获取当前匿名 Token-Session (可在未登录情况下使用的Token-Session) - * @return Token-Session 对象 + * + * @return Token-Session 对象 */ public static SaSession getAnonTokenSession() { return stpLogic.getAnonTokenSession(); } - // ------------------- [临时有效期] 验证相关 ------------------- + // ------------------- Activity-Timeout 临时有效期 验证相关 ------------------- /** - * 检查当前token 是否已经[临时过期],如果已经过期则抛出异常 - */ + * 检查当前 token 是否已经[临时过期],如果已经过期则抛出异常 + */ public static void checkActivityTimeout() { stpLogic.checkActivityTimeout(); } - /** - * 续签当前token:(将 [最后操作时间] 更新为当前时间戳) - *

请注意: 即使token已经 [临时过期] 也可续签成功, - * 如果此场景下需要提示续签失败,可在此之前调用 checkActivityTimeout() 强制检查是否过期即可

- */ + /** + * 续签当前 token:(将 [最后操作时间] 更新为当前时间戳) + *

+ * 请注意: 即使 token 已经 [ 临时过期 ] 也可续签成功, + * 如果此场景下需要提示续签失败,可在此之前调用 checkActivityTimeout() 强制检查是否过期即可 + *

+ */ public static void updateLastActivityToNow() { stpLogic.updateLastActivityToNow(); } @@ -465,60 +501,67 @@ public class StpUtil { // ------------------- 过期时间相关 ------------------- - /** - * 获取当前登录者的 token 剩余有效时间 (单位: 秒) - * @return token剩余有效时间 - */ + /** + * 获取当前会话 token 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * + * @return token剩余有效时间 + */ public static long getTokenTimeout() { return stpLogic.getTokenTimeout(); } - - /** - * 获取当前登录者的 User-Session 剩余有效时间 (单位: 秒) - * @return token剩余有效时间 - */ + + /** + * 获取当前登录账号的 Account-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * + * @return token剩余有效时间 + */ public static long getSessionTimeout() { return stpLogic.getSessionTimeout(); } - /** - * 获取当前 Token-Session 剩余有效时间 (单位: 秒) - * @return token剩余有效时间 - */ + /** + * 获取当前 token 的 Token-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * + * @return token剩余有效时间 + */ public static long getTokenSessionTimeout() { return stpLogic.getTokenSessionTimeout(); } - - /** - * 获取当前 token [临时过期] 剩余有效时间 (单位: 秒) - * @return token [临时过期] 剩余有效时间 - */ + + /** + * 获取当前 token [ 临时过期 ] 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值) + * + * @return / + */ public static long getTokenActivityTimeout() { return stpLogic.getTokenActivityTimeout(); } - /** - * 对当前 Token 的 timeout 值进行续期 - * @param timeout 要修改成为的有效时间 (单位: 秒) - */ + /** + * 对当前 token 的 timeout 值进行续期 + * + * @param timeout 要修改成为的有效时间 (单位: 秒) + */ public static void renewTimeout(long timeout) { stpLogic.renewTimeout(timeout); } - - /** - * 对指定 Token 的 timeout 值进行续期 - * @param tokenValue 指定token - * @param timeout 要修改成为的有效时间 (单位: 秒) - */ + + /** + * 对指定 token 的 timeout 值进行续期 + * + * @param tokenValue 指定 token + * @param timeout 要修改成为的有效时间 (单位: 秒,填 -1 代表要续为永久有效) + */ public static void renewTimeout(String tokenValue, long timeout) { stpLogic.renewTimeout(tokenValue, timeout); } - // ------------------- 角色验证操作 ------------------- + // ------------------- 角色认证操作 ------------------- /** - * 获取:当前账号的角色集合 + * 获取:当前账号的角色集合 + * * @return / */ public static List getRoleList() { @@ -526,7 +569,8 @@ public class StpUtil { } /** - * 获取:指定账号的角色集合 + * 获取:指定账号的角色集合 + * * @param loginId 指定账号id * @return / */ @@ -534,72 +578,80 @@ public class StpUtil { return stpLogic.getRoleList(loginId); } - /** - * 判断:当前账号是否拥有指定角色, 返回true或false - * @param role 角色标识 - * @return 是否含有指定角色标识 - */ + /** + * 判断:当前账号是否拥有指定角色, 返回 true 或 false + * + * @param role 角色 + * @return / + */ public static boolean hasRole(String role) { return stpLogic.hasRole(role); } - /** - * 判断:指定账号是否含有指定角色标识, 返回true或false - * @param loginId 账号id - * @param role 角色标识 - * @return 是否含有指定角色标识 - */ + /** + * 判断:指定账号是否含有指定角色标识, 返回 true 或 false + * + * @param loginId 账号id + * @param role 角色标识 + * @return 是否含有指定角色标识 + */ public static boolean hasRole(Object loginId, String role) { return stpLogic.hasRole(loginId, role); } - - /** - * 判断:当前账号是否含有指定角色标识 [指定多个,必须全部验证通过] - * @param roleArray 角色标识数组 - * @return true或false - */ + + /** + * 判断:当前账号是否含有指定角色标识 [ 指定多个,必须全部验证通过 ] + * + * @param roleArray 角色标识数组 + * @return true或false + */ public static boolean hasRoleAnd(String... roleArray){ return stpLogic.hasRoleAnd(roleArray); } - /** - * 判断:当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] - * @param roleArray 角色标识数组 - * @return true或false - */ + /** + * 判断:当前账号是否含有指定角色标识 [ 指定多个,只要其一验证通过即可 ] + * + * @param roleArray 角色标识数组 + * @return true或false + */ public static boolean hasRoleOr(String... roleArray){ return stpLogic.hasRoleOr(roleArray); } - - /** - * 校验:当前账号是否含有指定角色标识, 如果验证未通过,则抛出异常: NotRoleException - * @param role 角色标识 - */ + + /** + * 校验:当前账号是否含有指定角色标识, 如果验证未通过,则抛出异常: NotRoleException + * + * @param role 角色标识 + */ public static void checkRole(String role) { stpLogic.checkRole(role); } - /** - * 校验:当前账号是否含有指定角色标识 [指定多个,必须全部验证通过] - * @param roleArray 角色标识数组 - */ + /** + * 校验:当前账号是否含有指定角色标识 [ 指定多个,必须全部验证通过 ] + * + * @param roleArray 角色标识数组 + */ public static void checkRoleAnd(String... roleArray){ stpLogic.checkRoleAnd(roleArray); } - /** - * 校验:当前账号是否含有指定角色标识 [指定多个,只要其一验证通过即可] - * @param roleArray 角色标识数组 - */ + /** + * 校验:当前账号是否含有指定角色标识 [ 指定多个,只要其一验证通过即可 ] + * + * @param roleArray 角色标识数组 + */ public static void checkRoleOr(String... roleArray){ stpLogic.checkRoleOr(roleArray); } - // ------------------- 权限验证操作 ------------------- + // ------------------- 权限认证操作 ------------------- /** - * 获取:当前账号的权限码集合 + * 获取:当前账号的权限码集合 + * * @return / */ public static List getPermissionList() { @@ -607,7 +659,8 @@ public class StpUtil { } /** - * 获取:指定账号的权限码集合 + * 获取:指定账号的权限码集合 + * * @param loginId 指定账号id * @return / */ @@ -615,114 +668,130 @@ public class StpUtil { return stpLogic.getPermissionList(loginId); } - /** - * 判断:当前账号是否含有指定权限, 返回true或false - * @param permission 权限码 - * @return 是否含有指定权限 - */ + /** + * 判断:当前账号是否含有指定权限, 返回 true 或 false + * + * @param permission 权限码 + * @return 是否含有指定权限 + */ public static boolean hasPermission(String permission) { return stpLogic.hasPermission(permission); } - /** - * 判断:指定账号id是否含有指定权限, 返回true或false - * @param loginId 账号id - * @param permission 权限码 - * @return 是否含有指定权限 - */ + /** + * 判断:指定账号 id 是否含有指定权限, 返回 true 或 false + * + * @param loginId 账号 id + * @param permission 权限码 + * @return 是否含有指定权限 + */ public static boolean hasPermission(Object loginId, String permission) { return stpLogic.hasPermission(loginId, permission); } - /** - * 判断:当前账号是否含有指定权限, [指定多个,必须全部具有] - * @param permissionArray 权限码数组 - * @return true 或 false - */ + /** + * 判断:当前账号是否含有指定权限 [ 指定多个,必须全部具有 ] + * + * @param permissionArray 权限码数组 + * @return true 或 false + */ public static boolean hasPermissionAnd(String... permissionArray){ return stpLogic.hasPermissionAnd(permissionArray); } - /** - * 判断:当前账号是否含有指定权限 [指定多个,只要其一验证通过即可] - * @param permissionArray 权限码数组 - * @return true 或 false - */ + /** + * 判断:当前账号是否含有指定权限 [ 指定多个,只要其一验证通过即可 ] + * + * @param permissionArray 权限码数组 + * @return true 或 false + */ public static boolean hasPermissionOr(String... permissionArray){ return stpLogic.hasPermissionOr(permissionArray); } - - /** - * 校验:当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException - * @param permission 权限码 - */ + + /** + * 校验:当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException + * + * @param permission 权限码 + */ public static void checkPermission(String permission) { stpLogic.checkPermission(permission); } - /** - * 校验:当前账号是否含有指定权限 [指定多个,必须全部验证通过] - * @param permissionArray 权限码数组 - */ + /** + * 校验:当前账号是否含有指定权限 [ 指定多个,必须全部验证通过 ] + * + * @param permissionArray 权限码数组 + */ public static void checkPermissionAnd(String... permissionArray) { stpLogic.checkPermissionAnd(permissionArray); } - /** - * 校验:当前账号是否含有指定权限 [指定多个,只要其一验证通过即可] - * @param permissionArray 权限码数组 - */ + /** + * 校验:当前账号是否含有指定权限 [ 指定多个,只要其一验证通过即可 ] + * + * @param permissionArray 权限码数组 + */ public static void checkPermissionOr(String... permissionArray) { stpLogic.checkPermissionOr(permissionArray); } - // ------------------- id 反查token 相关操作 ------------------- - - /** - * 获取指定账号id的tokenValue - *

在配置为允许并发登录时,此方法只会返回队列的最后一个token, - * 如果你需要返回此账号id的所有token,请调用 getTokenValueListByLoginId + // ------------------- id 反查 token 相关操作 ------------------- + + /** + * 获取指定账号 id 的 token + *

+ * 在配置为允许并发登录时,此方法只会返回队列的最后一个 token, + * 如果你需要返回此账号 id 的所有 token,请调用 getTokenValueListByLoginId + *

+ * * @param loginId 账号id - * @return token值 + * @return token值 */ public static String getTokenValueByLoginId(Object loginId) { return stpLogic.getTokenValueByLoginId(loginId); } - /** - * 获取指定账号id指定设备类型端的tokenValue - *

在配置为允许并发登录时,此方法只会返回队列的最后一个token, - * 如果你需要返回此账号id的所有token,请调用 getTokenValueListByLoginId + /** + * 获取指定账号 id 指定设备类型端的 token + *

+ * 在配置为允许并发登录时,此方法只会返回队列的最后一个 token, + * 如果你需要返回此账号 id 的所有 token,请调用 getTokenValueListByLoginId + *

+ * * @param loginId 账号id - * @param device 设备类型 - * @return token值 + * @param device 设备类型,填 null 代表不限设备类型 + * @return token值 */ public static String getTokenValueByLoginId(Object loginId, String device) { return stpLogic.getTokenValueByLoginId(loginId, device); } - - /** - * 获取指定账号id的tokenValue集合 - * @param loginId 账号id - * @return 此loginId的所有相关token - */ + + /** + * 获取指定账号 id 的 token 集合 + * + * @param loginId 账号id + * @return 此 loginId 的所有相关 token + */ public static List getTokenValueListByLoginId(Object loginId) { return stpLogic.getTokenValueListByLoginId(loginId); } - /** - * 获取指定账号id指定设备类型端的tokenValue 集合 - * @param loginId 账号id - * @param device 设备类型 - * @return 此loginId的所有相关token - */ + /** + * 获取指定账号 id 指定设备类型端的 token 集合 + * + * @param loginId 账号id + * @param device 设备类型,填 null 代表不限设备类型 + * @return 此 loginId 的所有登录 token + */ public static List getTokenValueListByLoginId(Object loginId, String device) { return stpLogic.getTokenValueListByLoginId(loginId, device); } - + /** * 返回当前会话的登录设备类型 + * * @return 当前令牌的登录设备类型 */ public static String getLoginDevice() { @@ -733,39 +802,42 @@ public class StpUtil { // ------------------- 会话管理 ------------------- /** - * 根据条件查询Token - * @param keyword 关键字 + * 根据条件查询缓存中所有的 token + * + * @param keyword 关键字 * @param start 开始处索引 - * @param size 获取数量 (-1代表一直获取到末尾) + * @param size 获取数量 (-1代表一直获取到末尾) * @param sortType 排序类型(true=正序,false=反序) - * - * @return token集合 + * + * @return token集合 */ public static List searchTokenValue(String keyword, int start, int size, boolean sortType) { return stpLogic.searchTokenValue(keyword, start, size, sortType); } - + /** - * 根据条件查询SessionId - * @param keyword 关键字 + * 根据条件查询缓存中所有的 SessionId + * + * @param keyword 关键字 * @param start 开始处索引 - * @param size 获取数量 (-1代表一直获取到末尾) + * @param size 获取数量 (-1代表一直获取到末尾) * @param sortType 排序类型(true=正序,false=反序) - * - * @return sessionId集合 + * + * @return sessionId集合 */ public static List searchSessionId(String keyword, int start, int size, boolean sortType) { return stpLogic.searchSessionId(keyword, start, size, sortType); } /** - * 根据条件查询Token专属Session的Id - * @param keyword 关键字 - * @param start 开始处索引 - * @param size 获取数量 (-1代表一直获取到末尾) + * 根据条件查询缓存中所有的 Token-Session-Id + * + * @param keyword 关键字 + * @param start 开始处索引 + * @param size 获取数量 (-1代表一直获取到末尾) * @param sortType 排序类型(true=正序,false=反序) - * - * @return sessionId集合 + * + * @return sessionId集合 */ public static List searchTokenSessionId(String keyword, int start, int size, boolean sortType) { return stpLogic.searchTokenSessionId(keyword, start, size, sortType); @@ -777,7 +849,7 @@ public class StpUtil { /** * 封禁:指定账号 *

此方法不会直接将此账号id踢下线,如需封禁后立即掉线,请追加调用 StpUtil.logout(id) - * + * * @param loginId 指定账号id * @param time 封禁时间, 单位: 秒 (-1=永久封禁) */ @@ -787,7 +859,7 @@ public class StpUtil { /** * 判断:指定账号是否已被封禁 (true=已被封禁, false=未被封禁) - * + * * @param loginId 账号id * @return / */ @@ -796,7 +868,8 @@ public class StpUtil { } /** - * 校验:指定账号是否已被封禁,如果被封禁则抛出异常 + * 校验:指定账号是否已被封禁,如果被封禁则抛出异常 + * * @param loginId 账号id */ public static void checkDisable(Object loginId) { @@ -805,6 +878,7 @@ public class StpUtil { /** * 获取:指定账号剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁) + * * @param loginId 账号id * @return / */ @@ -814,6 +888,7 @@ public class StpUtil { /** * 解封:指定账号 + * * @param loginId 账号id */ public static void untieDisable(Object loginId) { @@ -826,7 +901,8 @@ public class StpUtil { /** * 封禁:指定账号的指定服务 *

此方法不会直接将此账号id踢下线,如需封禁后立即掉线,请追加调用 StpUtil.logout(id) - * @param loginId 指定账号id + * + * @param loginId 指定账号id * @param service 指定服务 * @param time 封禁时间, 单位: 秒 (-1=永久封禁) */ @@ -835,7 +911,8 @@ public class StpUtil { } /** - * 判断:指定账号的指定服务 是否已被封禁 (true=已被封禁, false=未被封禁) + * 判断:指定账号的指定服务 是否已被封禁(true=已被封禁, false=未被封禁) + * * @param loginId 账号id * @param service 指定服务 * @return / @@ -845,7 +922,8 @@ public class StpUtil { } /** - * 校验:指定账号 指定服务 是否已被封禁,如果被封禁则抛出异常 + * 校验:指定账号 指定服务 是否已被封禁,如果被封禁则抛出异常 + * * @param loginId 账号id * @param services 指定服务,可以指定多个 */ @@ -855,6 +933,7 @@ public class StpUtil { /** * 获取:指定账号 指定服务 剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁) + * * @param loginId 账号id * @param service 指定服务 * @return see note @@ -865,6 +944,7 @@ public class StpUtil { /** * 解封:指定账号、指定服务 + * * @param loginId 账号id * @param services 指定服务,可以指定多个 */ @@ -876,7 +956,8 @@ public class StpUtil { // ------------------- 阶梯封禁 ------------------- /** - * 封禁:指定账号,并指定封禁等级 + * 封禁:指定账号,并指定封禁等级 + * * @param loginId 指定账号id * @param level 指定封禁等级 * @param time 封禁时间, 单位: 秒 (-1=永久封禁) @@ -886,7 +967,8 @@ public class StpUtil { } /** - * 封禁:指定账号的指定服务,并指定封禁等级 + * 封禁:指定账号的指定服务,并指定封禁等级 + * * @param loginId 指定账号id * @param service 指定封禁服务 * @param level 指定封禁等级 @@ -898,7 +980,7 @@ public class StpUtil { /** * 判断:指定账号是否已被封禁到指定等级 - * + * * @param loginId 指定账号id * @param level 指定封禁等级 * @return / @@ -909,7 +991,7 @@ public class StpUtil { /** * 判断:指定账号的指定服务,是否已被封禁到指定等级 - * + * * @param loginId 指定账号id * @param service 指定封禁服务 * @param level 指定封禁等级 @@ -921,7 +1003,7 @@ public class StpUtil { /** * 校验:指定账号是否已被封禁到指定等级(如果已经达到,则抛出异常) - * + * * @param loginId 指定账号id * @param level 封禁等级 (只有 封禁等级 ≥ 此值 才会抛出异常) */ @@ -931,7 +1013,7 @@ public class StpUtil { /** * 校验:指定账号的指定服务,是否已被封禁到指定等级(如果已经达到,则抛出异常) - * + * * @param loginId 指定账号id * @param service 指定封禁服务 * @param level 封禁等级 (只有 封禁等级 ≥ 此值 才会抛出异常) @@ -942,7 +1024,7 @@ public class StpUtil { /** * 获取:指定账号被封禁的等级,如果未被封禁则返回-2 - * + * * @param loginId 指定账号id * @return / */ @@ -952,7 +1034,7 @@ public class StpUtil { /** * 获取:指定账号的 指定服务 被封禁的等级,如果未被封禁则返回-2 - * + * * @param loginId 指定账号id * @param service 指定封禁服务 * @return / @@ -962,16 +1044,17 @@ public class StpUtil { } - // ------------------- 身份切换 ------------------- + // ------------------- 临时身份切换 ------------------- /** - * 临时切换身份为指定账号id + * 临时切换身份为指定账号id + * * @param loginId 指定loginId */ public static void switchTo(Object loginId) { stpLogic.switchTo(loginId); } - + /** * 结束临时切换身份 */ @@ -980,15 +1063,17 @@ public class StpUtil { } /** - * 当前是否正处于[身份临时切换]中 - * @return 是否正处于[身份临时切换]中 + * 判断当前请求是否正处于 [ 身份临时切换 ] 中 + * + * @return / */ public static boolean isSwitch() { return stpLogic.isSwitch(); } /** - * 在一个代码段里方法内,临时切换身份为指定账号id + * 在一个 lambda 代码段里,临时切换身份为指定账号id,lambda 结束后自动恢复 + * * @param loginId 指定账号id * @param function 要执行的方法 */ @@ -998,9 +1083,10 @@ public class StpUtil { // ------------------- 二级认证 ------------------- - + /** - * 在当前会话 开启二级认证 + * 在当前会话 开启二级认证 + * * @param safeTime 维持时间 (单位: 秒) */ public static void openSafe(long safeTime) { @@ -1008,7 +1094,8 @@ public class StpUtil { } /** - * 在当前会话 开启二级认证 + * 在当前会话 开启二级认证 + * * @param service 业务标识 * @param safeTime 维持时间 (单位: 秒) */ @@ -1017,7 +1104,8 @@ public class StpUtil { } /** - * 当前会话 是否处于二级认证时间内 + * 判断:当前会话是否处于二级认证时间内 + * * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时 */ public static boolean isSafe() { @@ -1025,7 +1113,8 @@ public class StpUtil { } /** - * 当前会话 是否处于二级认证时间内 + * 判断:当前会话 是否处于指定业务的二级认证时间内 + * * @param service 业务标识 * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时 */ @@ -1034,7 +1123,8 @@ public class StpUtil { } /** - * 指定 Token 是否处于二级认证时间内 + * 判断:指定 token 是否处于二级认证时间内 + * * @param tokenValue Token 值 * @param service 业务标识 * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时 @@ -1044,22 +1134,24 @@ public class StpUtil { } /** - * 检查当前会话是否已通过二级认证,如未通过则抛出异常 + * 校验:当前会话是否已通过二级认证,如未通过则抛出异常 */ public static void checkSafe() { stpLogic.checkSafe(); } /** - * 检查当前会话是否已通过二级认证,如未通过则抛出异常 + * 校验:检查当前会话是否已通过指定业务的二级认证,如未通过则抛出异常 + * * @param service 业务标识 */ public static void checkSafe(String service) { stpLogic.checkSafe(service); } - + /** - * 获取当前会话的二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证) + * 获取:当前会话的二级认证剩余有效时间(单位: 秒, 返回-2代表尚未通过二级认证) + * * @return 剩余有效时间 */ public static long getSafeTime() { @@ -1067,7 +1159,8 @@ public class StpUtil { } /** - * 获取当前会话的二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证) + * 获取:当前会话的二级认证剩余有效时间(单位: 秒, 返回-2代表尚未通过二级认证) + * * @param service 业务标识 * @return 剩余有效时间 */ @@ -1083,7 +1176,8 @@ public class StpUtil { } /** - * 在当前会话 结束二级认证 + * 在当前会话 结束指定业务标识的二级认证 + * * @param service 业务标识 */ public static void closeSafe(String service) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java index 4b0095dd..fd3346d6 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java @@ -32,8 +32,8 @@ import java.util.function.Supplier; }); * * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public final class SaStrategy { @@ -49,37 +49,43 @@ public final class SaStrategy { /** * 创建 Token 的策略 - *

参数 [账号id, 账号类型] + *

参数 [ 账号id, 账号类型 ] */ public BiFunction createToken = (loginId, loginType) -> { // 根据配置的tokenStyle生成不同风格的token String tokenStyle = SaManager.getConfig().getTokenStyle(); - // uuid - if(SaTokenConsts.TOKEN_STYLE_UUID.equals(tokenStyle)) { - return UUID.randomUUID().toString(); + + switch (tokenStyle) { + // uuid + case SaTokenConsts.TOKEN_STYLE_UUID: + return UUID.randomUUID().toString(); + + // 简单uuid (不带下划线) + case SaTokenConsts.TOKEN_STYLE_SIMPLE_UUID: + return UUID.randomUUID().toString().replaceAll("-", ""); + + // 32位随机字符串 + case SaTokenConsts.TOKEN_STYLE_RANDOM_32: + return SaFoxUtil.getRandomString(32); + + // 64位随机字符串 + case SaTokenConsts.TOKEN_STYLE_RANDOM_64: + return SaFoxUtil.getRandomString(64); + + // 128位随机字符串 + case SaTokenConsts.TOKEN_STYLE_RANDOM_128: + return SaFoxUtil.getRandomString(128); + + // tik风格 (2_14_16) + case SaTokenConsts.TOKEN_STYLE_TIK: + return SaFoxUtil.getRandomString(2) + "_" + SaFoxUtil.getRandomString(14) + "_" + SaFoxUtil.getRandomString(16) + "__"; + + // 默认,还是uuid + default: + SaManager.getLog().warn("配置的 tokenStyle 值无效:{},仅允许以下取值: " + + "uuid、simple-uuid、random-32、random-64、random-128、tik", tokenStyle); + return UUID.randomUUID().toString(); } - // 简单uuid (不带下划线) - if(SaTokenConsts.TOKEN_STYLE_SIMPLE_UUID.equals(tokenStyle)) { - return UUID.randomUUID().toString().replaceAll("-", ""); - } - // 32位随机字符串 - if(SaTokenConsts.TOKEN_STYLE_RANDOM_32.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(32); - } - // 64位随机字符串 - if(SaTokenConsts.TOKEN_STYLE_RANDOM_64.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(64); - } - // 128位随机字符串 - if(SaTokenConsts.TOKEN_STYLE_RANDOM_128.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(128); - } - // tik风格 (2_14_16) - if(SaTokenConsts.TOKEN_STYLE_TIK.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(2) + "_" + SaFoxUtil.getRandomString(14) + "_" + SaFoxUtil.getRandomString(16) + "__"; - } - // 默认,还是uuid - return UUID.randomUUID().toString(); }; /** diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempDefaultImpl.java index e0ec0cbb..b0af6519 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempDefaultImpl.java @@ -1,9 +1,10 @@ package cn.dev33.satoken.temp; /** - * Sa-Token 临时令牌验证模块 默认实现类 - * @author kong + * Sa-Token 临时令牌验证模块 默认实现类 * + * @author click33 + * @since <= 1.34.0 */ public class SaTempDefaultImpl implements SaTempInterface { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java index 1a12acbb..42b0c812 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java @@ -6,30 +6,37 @@ import cn.dev33.satoken.util.SaFoxUtil; import cn.dev33.satoken.util.SaTokenConsts; /** - * Sa-Token 临时令牌验证模块接口 - * @author kong + * Sa-Token 临时 token 验证模块 - 接口 * + *

+ * 有效期很短的一种token,一般用于一次性接口防盗用、短时间资源访问等业务场景 + *

+ * + * @author click33 + * @since <= 1.34.0 */ public interface SaTempInterface { + // -------- 创建 + /** - * 为 指定值 创建一个临时 Token + * 为指定 value 创建一个临时 Token * @param value 指定值 - * @param timeout 有效期,单位:秒,-1代表永久有效 - * @return 生成的token + * @param timeout 有效时间,单位:秒,-1代表永久有效 + * @return 生成的 token */ - public default String createToken(Object value, long timeout) { + default String createToken(Object value, long timeout) { return createToken(SaTokenConsts.DEFAULT_TEMP_TOKEN_SERVICE, value, timeout); } /** - * 为 指定服务 指定值 创建一个 Token - * @param service 服务标识 + * 为指定 业务标识、指定 value 创建一个 Token + * @param service 业务标识 * @param value 指定值 * @param timeout 有效期,单位:秒,-1代表永久有效 * @return 生成的token */ - public default String createToken(String service, Object value, long timeout) { + default String createToken(String service, Object value, long timeout) { // 生成 token String token = SaStrategy.me.createToken.apply(null, null); @@ -41,23 +48,25 @@ public interface SaTempInterface { // 返回 return token; } - + + // -------- 解析 + /** * 解析 Token 获取 value * @param token 指定 Token * @return / */ - public default Object parseToken(String token) { + default Object parseToken(String token) { return parseToken(SaTokenConsts.DEFAULT_TEMP_TOKEN_SERVICE, token); } /** * 解析 Token 获取 value - * @param service 服务标识 - * @param token 指定 Token + * @param service 业务标识 + * @param token 指定 Token * @return / */ - public default Object parseToken(String service, String token) { + default Object parseToken(String service, String token) { String key = splicingKeyTempToken(service, token); return SaManager.getSaTokenDao().getObject(key); } @@ -69,19 +78,19 @@ public interface SaTempInterface { * @param 默认值的类型 * @return / */ - public default T parseToken(String token, Class cs) { + default T parseToken(String token, Class cs) { return parseToken(SaTokenConsts.DEFAULT_TEMP_TOKEN_SERVICE, token, cs); } /** * 解析 Token 获取 value,并转换为指定类型 - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token * @param cs 指定类型 * @param 默认值的类型 * @return / */ - public default T parseToken(String service, String token, Class cs) { + default T parseToken(String service, String token, Class cs) { return SaFoxUtil.getValueByType(parseToken(service, token), cs); } @@ -91,54 +100,58 @@ public interface SaTempInterface { * @param token 指定 Token * @return / */ - public default long getTimeout(String token) { + default long getTimeout(String token) { return getTimeout(SaTokenConsts.DEFAULT_TEMP_TOKEN_SERVICE, token); } /** - * 获取指定服务指定 Token 的剩余有效期,单位:秒 + * 获取指定 业务标识、指定 Token 的剩余有效期,单位:秒 *

返回值 -1 代表永久,-2 代表token无效 - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token * @return / */ - public default long getTimeout(String service, String token) { + default long getTimeout(String service, String token) { String key = splicingKeyTempToken(service, token); return SaManager.getSaTokenDao().getObjectTimeout(key); } + // -------- 删除 + /** * 删除一个 Token * @param token 指定 Token */ - public default void deleteToken(String token) { + default void deleteToken(String token) { deleteToken(SaTokenConsts.DEFAULT_TEMP_TOKEN_SERVICE, token); } /** * 删除一个 Token - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token */ - public default void deleteToken(String service, String token) { + default void deleteToken(String service, String token) { String key = splicingKeyTempToken(service, token); SaManager.getSaTokenDao().deleteObject(key); } - + + // -------- 其它 + /** - * 获取映射关系的持久化key - * @param service 服务标识 + * 获取:在存储临时 token 数据时,应该使用的 key + * @param service 业务标识 * @param token token值 * @return key */ - public default String splicingKeyTempToken(String service, String token) { + default String splicingKeyTempToken(String service, String token) { return SaManager.getConfig().getTokenName() + ":temp-token:" + service + ":" + token; } /** * @return jwt秘钥 (只有集成 sa-token-temp-jwt 模块时此参数才会生效) */ - public default String getJwtSecretKey() { + default String getJwtSecretKey() { return null; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempUtil.java index aaec7e2f..256473f7 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempUtil.java @@ -3,17 +3,24 @@ package cn.dev33.satoken.temp; import cn.dev33.satoken.SaManager; /** - * Sa-Token 临时验证令牌模块 - * @author kong + * Sa-Token 临时 token 验证模块 - 工具类 * + *

+ * 有效期很短的一种token,一般用于一次性接口防盗用、短时间资源访问等业务场景 + *

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTempUtil { private SaTempUtil() { } + // -------- 创建 + /** - * 为 指定值 创建一个临时 Token + * 为指定 value 创建一个临时 Token * @param value 指定值 * @param timeout 有效期,单位:秒,-1代表永久有效 * @return 生成的token @@ -23,8 +30,8 @@ public class SaTempUtil { } /** - * 为 指定服务 指定值 创建一个 Token - * @param service 服务标识 + * 为指定 业务标识、指定 value 创建一个 Token + * @param service 业务标识 * @param value 指定值 * @param timeout 有效期,单位:秒,-1代表永久有效 * @return 生成的token @@ -33,6 +40,8 @@ public class SaTempUtil { return SaManager.getSaTemp().createToken(service, value, timeout); } + // -------- 解析 + /** * 解析 Token 获取 value * @param token 指定 Token @@ -44,7 +53,7 @@ public class SaTempUtil { /** * 解析 Token 获取 value - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token * @return / */ @@ -65,7 +74,7 @@ public class SaTempUtil { /** * 解析 Token 获取 value,并转换为指定类型 - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token * @param cs 指定类型 * @param 默认值的类型 @@ -86,9 +95,9 @@ public class SaTempUtil { } /** - * 获取指定服务指定 Token 的剩余有效期,单位:秒 + * 获取指定 业务标识、指定 Token 的剩余有效期,单位:秒 *

返回值 -1 代表永久,-2 代表token无效 - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token * @return / */ @@ -96,6 +105,8 @@ public class SaTempUtil { return SaManager.getSaTemp().getTimeout(service, token); } + // -------- 删除 + /** * 删除一个 Token * @param token 指定 Token @@ -106,7 +117,7 @@ public class SaTempUtil { /** * 删除一个 Token - * @param service 服务标识 + * @param service 业务标识 * @param token 指定 Token */ public static void deleteToken(String service, String token) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java index 4dc0509f..bd309cea 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java @@ -3,6 +3,7 @@ package cn.dev33.satoken.util; import cn.dev33.satoken.error.SaErrorCode; import cn.dev33.satoken.exception.SaTokenException; +import java.io.Console; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; @@ -18,8 +19,8 @@ import java.util.regex.Pattern; /** * Sa-Token 内部工具类 * - * @author kong - * + * @author click33 + * @since <= 1.34.0 */ public class SaFoxUtil { @@ -75,7 +76,7 @@ public class SaFoxUtil { * @return 是否为null或者空字符串 */ public static boolean isNotEmpty(Object str) { - return isEmpty(str) == false; + return ! isEmpty(str); } /** @@ -602,4 +603,39 @@ public class SaFoxUtil { return logLevelList.get(level); } + /** + * 判断当前系统是否可以打印彩色日志,判断准确率并非100%,但基本可以满足大部分场景 + * @return / + */ + public static boolean isCanColorLog() { + + // 获取当前环境相关信息 + Console console = System.console(); + String term = System.getenv().get("TERM"); + + // 两者均为 null,一般是在 eclipse、idea 等 IDE 环境下运行的,此时可以打印彩色日志 + if(console == null && term == null) { + return true; + } + + // 两者均不为 null,一般是在 linux 环境下控制台运行的,此时可以打印彩色日志 + if(console != null && term != null) { + return true; + } + + // console 有值,term 为 null,一般是在 windows 的 cmd 控制台运行的,此时不可以打印彩色日志 + if(console != null && term == null) { + return false; + } + + // console 为 null,term 有值,一般是在 linux 的 nohup 命令运行的,此时不可以打印彩色日志 + // 此时也有可能是在 windows 的 git bash 环境下运行的,此时可以打印彩色日志,但此场景无法和上述场景区分,所以统一不打印彩色日志 + if(console == null && term != null) { + return false; + } + + // 正常情况下,代码不会走到这里,但是方法又必须要有返回值,所以随便返回一个 + return false; + } + } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaResult.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaResult.java index 08576971..ff378ca6 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaResult.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaResult.java @@ -5,19 +5,24 @@ import java.util.LinkedHashMap; import java.util.Map; /** - * 对 Ajax 请求返回Json格式数据的简易封装
- * 所有预留字段:
- * code=状态码
- * msg=描述信息
- * data=携带对象
- * - * @author kong + * 对请求接口返回 Json 格式数据的简易封装。 * + *

+ * 所有预留字段:
+ * code = 状态码
+ * msg = 描述信息
+ * data = 携带对象
+ *

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaResult extends LinkedHashMap implements Serializable{ - private static final long serialVersionUID = 1L; // 序列化版本号 - + // 序列化版本号 + private static final long serialVersionUID = 1L; + + // 预定的状态码 public static final int CODE_SUCCESS = 200; public static final int CODE_ERROR = 500; @@ -132,7 +137,7 @@ public class SaResult extends LinkedHashMap implements Serializa } - // ============================ 构建 ================================== + // ============================ 静态方法快速构建 ================================== // 构建成功 public static SaResult ok() { @@ -182,6 +187,9 @@ public class SaResult extends LinkedHashMap implements Serializa * @return */ private String transValue(Object value) { + if(value == null) { + return null; + } if(value instanceof String) { return "\"" + value + "\""; } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java index c3f6eae7..b9925c92 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java @@ -1,9 +1,15 @@ package cn.dev33.satoken.util; /** - * Sa-Token常量类 - * @author kong + * Sa-Token 常量类 * + *

+ * 一般的常量采用就近原则,定义在各自相应的模块中。 + * 但有一些常量没有明确的归属模块,会在很多模块中使用到,比如版本号、开源地址等,属于全局性的础性常量,这些常量统一定义在此类中。 + *

+ * + * @author click33 + * @since <= 1.34.0 */ public class SaTokenConsts { @@ -32,71 +38,72 @@ public class SaTokenConsts { */ public static final String DEV_DOC_URL = "https://sa-token.cc"; - // ------------------ 常量key标记 + + // ------------------ 常量 key 标记 /** - * 常量key标记: 如果token为本次请求新创建的,则以此字符串为key存储在当前request中 + * 常量 key 标记: 如果 token 为本次请求新创建的,则以此字符串为 key 存储在当前请求 str 中 */ public static final String JUST_CREATED = "JUST_CREATED_"; /** - * 常量key标记: 如果token为本次请求新创建的,则以此字符串为key存储在当前request中(不拼接前缀,纯Token) + * 常量 key 标记: 如果 token 为本次请求新创建的,则以此字符串为 key 存储在当前 request 中(不拼接前缀,纯Token) */ public static final String JUST_CREATED_NOT_PREFIX = "JUST_CREATED_NOT_PREFIX_"; /** - * 常量key标记: 如果本次请求已经验证过[无操作过期], 则以此值存储在当前request中 + * 常量 key 标记: 如果本次请求已经验证过 [ 临时过期 ] , 则以此值存储在当前 request 中 */ public static final String TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY = "TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY_"; /** - * 常量key标记: 在登录时,默认使用的设备类型 + * 常量 key 标记: 在登录时,默认使用的设备类型 */ public static final String DEFAULT_LOGIN_DEVICE = "default-device"; /** - * 常量key标记: 在封禁账号时,默认封禁的服务类型 + * 常量 key 标记: 在封禁账号时,默认封禁的服务类型 */ public static final String DEFAULT_DISABLE_SERVICE = "login"; /** - * 常量key标记: 在封禁账号时,默认封禁的等级 + * 常量 key 标记: 在封禁账号时,默认封禁的等级 */ public static final int DEFAULT_DISABLE_LEVEL = 1; /** - * 常量key标记: 在封禁账号时,可使用的最小封禁级别 + * 常量 key 标记: 在封禁账号时,可使用的最小封禁级别 */ public static final int MIN_DISABLE_LEVEL = 1; /** - * 常量key标记: 账号封禁级别,表示未被封禁 + * 常量 key 标记: 账号封禁级别,表示未被封禁 */ public static final int NOT_DISABLE_LEVEL = -2; /** - * 常量key标记: 在进行临时身份切换时使用的key + * 常量 key 标记: 在进行临时身份切换时使用的 key */ public static final String SWITCH_TO_SAVE_KEY = "SWITCH_TO_SAVE_KEY_"; /** - * 常量key标记: 在进行Token二级验证时,使用的key + * 常量 key 标记: 在进行 Token 二级验证时,使用的 key */ @Deprecated public static final String SAFE_AUTH_SAVE_KEY = "SAFE_AUTH_SAVE_KEY_"; /** - * 常量key标记: 在进行 Token 二级验证时,写入的 value 值 + * 常量 key 标记: 在进行 Token 二级认证时,写入的 value 值 */ public static final String SAFE_AUTH_SAVE_VALUE = "SAFE_AUTH_SAVE_VALUE"; /** - * 常量key标记: 在进行 Token 二级验证时,默认的业务类型 + * 常量 key 标记: 在进行 Token 二级验证时,默认的业务类型 */ public static final String DEFAULT_SAFE_AUTH_SERVICE = "important"; /** - * 常量key标记: 临时 Token 认证模块,默认的业务类型 + * 常量 key 标记: 临时 Token 认证模块,默认的业务类型 */ public static final String DEFAULT_TEMP_TOKEN_SERVICE = "record"; @@ -155,7 +162,7 @@ public class SaTokenConsts { // ------------------ 其它 /** - * 连接Token前缀和Token值的字符 + * 连接 Token 前缀和 Token 值的字符 */ public static final String TOKEN_CONNECTOR_CHAT = " "; diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/StrFormatter.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/StrFormatter.java index b02a4d8b..7f559c10 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/util/StrFormatter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/StrFormatter.java @@ -1,13 +1,14 @@ package cn.dev33.satoken.util; /** - * 字符串格式化工具 + * 字符串格式化工具,将字符串中的 {} 按序替换为参数 *

* 本工具类 copy 自 Hutool: * https://github.com/dromara/hutool/blob/v5-master/hutool-core/src/main/java/cn/hutool/core/text/StrFormatter.java *

* * @author Looly + * @since <= 1.34.0 */ public class StrFormatter { diff --git a/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/SaTokenAloneRedisClusterApplication.java b/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/SaTokenAloneRedisClusterApplication.java index 84c733c5..616b5cc8 100644 --- a/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/SaTokenAloneRedisClusterApplication.java +++ b/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/SaTokenAloneRedisClusterApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token整合SpringBoot 示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/test/TestController.java index 634faeed..1b123e71 100644 --- a/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-alone-redis-cluster/src/main/java/com/pj/test/TestController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/SaTokenAloneRedisApplication.java b/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/SaTokenAloneRedisApplication.java index f78e850e..1beb6d56 100644 --- a/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/SaTokenAloneRedisApplication.java +++ b/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/SaTokenAloneRedisApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token整合SpringBoot 示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/test/TestController.java index 634faeed..1b123e71 100644 --- a/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-alone-redis/src/main/java/com/pj/test/TestController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/SaTokenCaseApplication.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/SaTokenCaseApplication.java index 5261af0d..025814fc 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/SaTokenCaseApplication.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/SaTokenCaseApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token 示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/test/TestController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/test/TestController.java index 4bc18059..16204f3a 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/test/TestController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/test/TestController.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaResult; /** * 测试专用 Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/DisableController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/DisableController.java index cd017e9a..f7366647 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/DisableController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/DisableController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 账号封禁示例 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/HttpBasicController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/HttpBasicController.java index 8d328576..5b6b97f0 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/HttpBasicController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/HttpBasicController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token Http Basic 认证 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/MutexLoginController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/MutexLoginController.java index 688393c0..d22d7123 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/MutexLoginController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/MutexLoginController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 同端互斥登录示例 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/NotCookieController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/NotCookieController.java index 903b6837..242d3a9f 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/NotCookieController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/NotCookieController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 前后端分离模式示例 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/RememberMeController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/RememberMeController.java index fc4c9e4e..677a7fa8 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/RememberMeController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/RememberMeController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 记住我模式登录 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SafeAuthController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SafeAuthController.java index 34caa912..cfbedc65 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SafeAuthController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SafeAuthController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 二级认证示例 * - * @author kong + * @author click33 * @since 2022-10-16 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SearchSessionController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SearchSessionController.java index d1835709..bef5116f 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SearchSessionController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SearchSessionController.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 会话查询示例 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SecureController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SecureController.java index 15e3a58d..96762b7c 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SecureController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SecureController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 密码加密示例 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SwitchToController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SwitchToController.java index 2bd25b0a..1d7fab63 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SwitchToController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/up/SwitchToController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 身份切换 * - * @author kong + * @author click33 * @since 2022-10-17 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/AtCheckController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/AtCheckController.java index 73393c4f..d37ac801 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/AtCheckController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/AtCheckController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 注解鉴权示例 * - * @author kong + * @author click33 * @since 2022-10-13 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/JurAuthController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/JurAuthController.java index f7a36c7f..75664959 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/JurAuthController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/JurAuthController.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 权限认证示例 * - * @author kong + * @author click33 * @since 2022-10-13 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/KickoutController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/KickoutController.java index 8d77e9fc..a8f07e41 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/KickoutController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/KickoutController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 权限认证示例 * - * @author kong + * @author click33 * @since 2022-10-13 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/LoginAuthController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/LoginAuthController.java index 8af29e8c..263f5665 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/LoginAuthController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/LoginAuthController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 登录认证示例 * - * @author kong + * @author click33 * @since 2022-10-13 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/RouterCheckController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/RouterCheckController.java index fe83ee34..fe64ccc4 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/RouterCheckController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/RouterCheckController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 为路由拦截鉴权准备的路示例 * - * @author kong + * @author click33 * @since 2022-10-15 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/SaSessionController.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/SaSessionController.java index ea85b84e..80db0cec 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/SaSessionController.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/cases/use/SaSessionController.java @@ -16,7 +16,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token Session会话示例 * - * @author kong + * @author click33 * @since 2022-10-15 */ @RestController diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/current/NotFoundHandle.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/current/NotFoundHandle.java index 1e82e95a..81ff22e8 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/current/NotFoundHandle.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/current/NotFoundHandle.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 处理 404 - * @author kong + * @author click33 */ @RestController public class NotFoundHandle implements ErrorController { diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/model/SysUser.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/model/SysUser.java index 7add568e..4f8b8a2d 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/model/SysUser.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/model/SysUser.java @@ -5,7 +5,7 @@ import java.io.Serializable; /** * User 实体类 * - * @author kong + * @author click33 * @since 2022-10-15 */ public class SysUser implements Serializable { diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java index dd4bd66d..3a0f51e4 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTokenListener.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.stp.SaLoginModel; /** * Sa-Token 自定义侦听器的实现 * - * @author kong + * @author click33 * @since 2022-10-17 */ //@Component // 打开此注解,让 SpringBoot 扫描到组件,即可完成自定义侦听器的注入 diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaLogForSlf4j.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaLogForSlf4j.java index 59d0a8dd..67599e79 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaLogForSlf4j.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaLogForSlf4j.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.log.SaLog; /** * 将 Sa-Token log 信息转接到 Slf4j * - * @author kong + * @author click33 * @since 2022-11-2 */ //@Component diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java index 7f41b5fb..537c32c5 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -18,7 +18,7 @@ import cn.dev33.satoken.util.SaResult; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpInterfaceImpl.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpInterfaceImpl.java index 1c1e1e58..6d7a453d 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpInterfaceImpl.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpInterfaceImpl.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.stp.StpInterface; /** * 自定义权限认证接口扩展,Sa-Token 将从此实现类获取每个账号拥有的权限码 * - * @author kong + * @author click33 * @since 2022-10-13 */ @Component // 打开此注解,保证此类被springboot扫描,即可完成sa-token的自定义权限验证扩展 diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java index f969c2e7..7431acec 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.stp.StpLogic; /** * Sa-Token 权限认证工具类 (User版) - * @author kong + * @author click33 */ @Component public class StpUserUtil { diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckLogin.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckLogin.java index 74014898..08085bbc 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckLogin.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckLogin.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.annotation.SaCheckLogin; /** * 登录认证(User版):只有登录之后才能进入该方法 *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * @author click33 * */ @SaCheckLogin(type = StpUserUtil.TYPE) diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckPermission.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckPermission.java index 38312116..d63fe208 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckPermission.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckPermission.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.annotation.SaMode; /** * 权限认证(User版):必须具有指定权限才能进入该方法 *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * @author click33 * */ @SaCheckPermission(type = StpUserUtil.TYPE) diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckRole.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckRole.java index c9b44f32..e8707280 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckRole.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/SaUserCheckRole.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.annotation.SaMode; /** * 角色认证(User版):必须具有指定角色标识才能进入该方法 *

可标注在函数、类上(效果等同于标注在此类的所有方法上) - * @author kong + * @author click33 * */ @SaCheckRole(type = StpUserUtil.TYPE) diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/StpUserUtil.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/StpUserUtil.java index 30cdc1a9..7f817598 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/StpUserUtil.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/at/StpUserUtil.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.stp.StpLogic; /** * Sa-Token 权限认证工具类 (User版) - * @author kong + * @author click33 */ public class StpUserUtil { diff --git a/sa-token-demo/sa-token-demo-dubbo-consumer/src/main/java/com/pj/ConsumerApplication.java b/sa-token-demo/sa-token-demo-dubbo-consumer/src/main/java/com/pj/ConsumerApplication.java index 1936b0d5..9aac0a84 100644 --- a/sa-token-demo/sa-token-demo-dubbo-consumer/src/main/java/com/pj/ConsumerApplication.java +++ b/sa-token-demo/sa-token-demo-dubbo-consumer/src/main/java/com/pj/ConsumerApplication.java @@ -7,7 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Dubbo 服务消费端 * - * @author kong + * @author click33 * */ @EnableDubbo diff --git a/sa-token-demo/sa-token-demo-dubbo-provider/src/main/java/com/pj/ProviderApplication.java b/sa-token-demo/sa-token-demo-dubbo-provider/src/main/java/com/pj/ProviderApplication.java index 8eb9567c..05afb4fc 100644 --- a/sa-token-demo/sa-token-demo-dubbo-provider/src/main/java/com/pj/ProviderApplication.java +++ b/sa-token-demo/sa-token-demo-dubbo-provider/src/main/java/com/pj/ProviderApplication.java @@ -7,7 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Dubbo 服务提供端 * - * @author kong + * @author click33 * */ @EnableDubbo diff --git a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java index 29a77d96..d689844d 100644 --- a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.stp.StpLogic; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java index e3a5e8f4..218ae733 100644 --- a/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java +++ b/sa-token-demo/sa-token-demo-jwt/src/main/java/com/pj/test/TestJwtController.java @@ -16,7 +16,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/SaOAuth2ClientApplication.java b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/SaOAuth2ClientApplication.java index 0bbe6c48..2312e2c8 100644 --- a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/SaOAuth2ClientApplication.java +++ b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/SaOAuth2ClientApplication.java @@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 启动:Sa-OAuth2 ClientServer端 - * @author kong + * @author click33 */ @SpringBootApplication public class SaOAuth2ClientApplication { diff --git a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/oauth2/SaOAuthClientController.java b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/oauth2/SaOAuthClientController.java index aed42c2a..284901f0 100644 --- a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/oauth2/SaOAuthClientController.java +++ b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/oauth2/SaOAuthClientController.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-OAuth2 Client端 控制器 - * @author kong + * @author click33 */ @RestController public class SaOAuthClientController { diff --git a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/utils/SoMap.java b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/utils/SoMap.java index 5258a6d3..dbb58d9d 100644 --- a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/utils/SoMap.java +++ b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/utils/SoMap.java @@ -24,7 +24,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * Map< String, Object> 是最常用的一种Map类型,但是它写着麻烦 *

所以特封装此类,继承Map,进行一些扩展,可以让Map更灵活使用 *

最新:2020-12-10 新增部分构造方法 - * @author kong + * @author click33 */ public class SoMap extends LinkedHashMap { diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/SaOAuth2ServerApplication.java b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/SaOAuth2ServerApplication.java index a588eee0..4accb81c 100644 --- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/SaOAuth2ServerApplication.java +++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/SaOAuth2ServerApplication.java @@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 启动:Sa-OAuth2 Server端 - * @author kong + * @author click33 */ @SpringBootApplication public class SaOAuth2ServerApplication { diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java index 00b53033..7f49f746 100644 --- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java +++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java @@ -19,7 +19,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-OAuth2 Server端 控制器 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java index 194c2942..758b4090 100644 --- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java +++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.oauth2.model.SaClientModel; /** * Sa-Token OAuth2.0 整合实现 - * @author kong + * @author click33 */ @Component public class SaOAuth2TemplateImpl extends SaOAuth2Template { diff --git a/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/SaQuicikStartup.java b/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/SaQuicikStartup.java index 0bd61346..ceaae649 100644 --- a/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/SaQuicikStartup.java +++ b/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/SaQuicikStartup.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.quick.SaQuickManager; /** * springboot启动之后 - * @author kong + * @author click33 * */ @Component diff --git a/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/test/TestController.java index 5ad5cedb..b7a4d57a 100644 --- a/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-quick-login/src/main/java/com/pj/test/TestController.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaLogForSolon.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaLogForSolon.java index ddfa4b49..01ee2354 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaLogForSolon.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaLogForSolon.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.util.StrFormatter; /** * 将 Sa-Token log 信息转接到 Solon * - * @author kong + * @author click33 * @since 2022-11-2 */ //@Component diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java index 567489d5..640d4654 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.context.SaHolder; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * @author noear */ @Configuration diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/SSOController.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/SSOController.java index 7bf77a2f..8cc55287 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/SSOController.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/SSOController.java @@ -10,7 +10,7 @@ import org.noear.solon.annotation.Param; /** * 测试: 同域单点登录 - * @author kong + * @author click33 * @author noear */ @Controller diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/StressTestController.java index f0ac2180..cb203812 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/StressTestController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * 压力测试 - * @author kong + * @author click33 * @author noear */ @Controller diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/TestController.java index 8c9b4726..50e75177 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/TestController.java @@ -20,7 +20,7 @@ import org.noear.solon.annotation.Param; /** * 测试专用Controller - * @author kong + * @author click33 * @author noear */ @Controller diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/UserController.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/UserController.java index 20e3d28f..939d5c4d 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/UserController.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/test/UserController.java @@ -6,7 +6,7 @@ import org.noear.solon.annotation.Mapping; /** * 登录测试 - * @author kong + * @author click33 * @author noear */ @Controller diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/util/Ttime.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/util/Ttime.java index cb17dcaa..dec4f1cb 100644 --- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/util/Ttime.java +++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/util/Ttime.java @@ -3,7 +3,7 @@ package com.pj.util; /** * 用于测试用时 - * @author kong + * @author click33 * */ public class Ttime { diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/SaTokenDemoApplication.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/SaTokenDemoApplication.java index 7c01ff54..09416324 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/SaTokenDemoApplication.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/SaTokenDemoApplication.java @@ -5,8 +5,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** - * Sa-Token整合SpringBoot 示例,整合redis - * @author kong + * Sa-Token整合SpringBoot 示例,整合redis + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/current/NotFoundHandle.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/current/NotFoundHandle.java index 1e82e95a..81ff22e8 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/current/NotFoundHandle.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/current/NotFoundHandle.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 处理 404 - * @author kong + * @author click33 */ @RestController public class NotFoundHandle implements ErrorController { diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java index 74e61a58..9dd25cd9 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -12,7 +12,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/AtController.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/AtController.java index dc7c6f95..3af4c603 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/AtController.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/AtController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 注解鉴权测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/LoginController.java index ea94cfa7..34eea9a1 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/StressTestController.java index a2384567..b4273109 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/StressTestController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 压力测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/TestController.java index 308bcaa8..9838063e 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/test/TestController.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaResult; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/util/Ttime.java b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/util/Ttime.java index cb17dcaa..dec4f1cb 100644 --- a/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/util/Ttime.java +++ b/sa-token-demo/sa-token-demo-springboot-redis/src/main/java/com/pj/util/Ttime.java @@ -3,7 +3,7 @@ package com.pj.util; /** * 用于测试用时 - * @author kong + * @author click33 * */ public class Ttime { diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/SaTokenDemoApplication.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/SaTokenDemoApplication.java index 4f5e4467..58427670 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/SaTokenDemoApplication.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/SaTokenDemoApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token整合SpringBoot 示例,整合redis - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/current/NotFoundHandle.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/current/NotFoundHandle.java index 1e82e95a..81ff22e8 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/current/NotFoundHandle.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/current/NotFoundHandle.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 处理 404 - * @author kong + * @author click33 */ @RestController public class NotFoundHandle implements ErrorController { diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/satoken/SaTokenConfigure.java index 9de045f8..23e97876 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/AtController.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/AtController.java index dc7c6f95..3af4c603 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/AtController.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/AtController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 注解鉴权测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/LoginController.java index ea94cfa7..34eea9a1 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/StressTestController.java index a2384567..b4273109 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/StressTestController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 压力测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/TestController.java index d0aa2580..065fa706 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/test/TestController.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaResult; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/util/Ttime.java b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/util/Ttime.java index cb17dcaa..dec4f1cb 100644 --- a/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/util/Ttime.java +++ b/sa-token-demo/sa-token-demo-springboot-redisson/src/main/java/com/pj/util/Ttime.java @@ -3,7 +3,7 @@ package com.pj.util; /** * 用于测试用时 - * @author kong + * @author click33 * */ public class Ttime { diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java index edb06d7a..195754ec 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/SaTokenDemoApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token整合SpringBoot 示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/current/NotFoundHandle.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/current/NotFoundHandle.java index 1e82e95a..81ff22e8 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/current/NotFoundHandle.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/current/NotFoundHandle.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 处理 404 - * @author kong + * @author click33 */ @RestController public class NotFoundHandle implements ErrorController { diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java index 9d628520..8feeb06f 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.interceptor.SaInterceptor; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/AtController.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/AtController.java index dc7c6f95..3af4c603 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/AtController.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/AtController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 注解鉴权测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/LoginController.java index ea94cfa7..34eea9a1 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java index 5c0b3ce1..4883e6ee 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/StressTestController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * 压力测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java index 92096114..cccdd95d 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java @@ -22,7 +22,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/util/Ttime.java b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/util/Ttime.java index cb17dcaa..dec4f1cb 100644 --- a/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/util/Ttime.java +++ b/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/util/Ttime.java @@ -3,7 +3,7 @@ package com.pj.util; /** * 用于测试用时 - * @author kong + * @author click33 * */ public class Ttime { diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/SaTokenSpringBoot3Application.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/SaTokenSpringBoot3Application.java index 5b6809d5..a5f6a097 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/SaTokenSpringBoot3Application.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/SaTokenSpringBoot3Application.java @@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Sa-Token 整合 SpringBoot3 示例,整合redis - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/current/NotFoundHandle.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/current/NotFoundHandle.java index 21ea1d72..6e744e4f 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/current/NotFoundHandle.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/current/NotFoundHandle.java @@ -12,7 +12,7 @@ import jakarta.servlet.http.HttpServletResponse; /** * 处理 404 - * @author kong + * @author click33 */ @RestController public class NotFoundHandle implements ErrorController { diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java index c4cacc6e..47549281 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/AtController.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/AtController.java index dc7c6f95..3af4c603 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/AtController.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/AtController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 注解鉴权测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/LoginController.java index ea94cfa7..34eea9a1 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/StressTestController.java index a2384567..b4273109 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/StressTestController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 压力测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/TestController.java index d0aa2580..065fa706 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/test/TestController.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaResult; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/util/Ttime.java b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/util/Ttime.java index cb17dcaa..dec4f1cb 100644 --- a/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/util/Ttime.java +++ b/sa-token-demo/sa-token-demo-springboot3-redis/src/main/java/com/pj/util/Ttime.java @@ -3,7 +3,7 @@ package com.pj.util; /** * 用于测试用时 - * @author kong + * @author click33 * */ public class Ttime { diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/CorsFilter.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/CorsFilter.java index 13143a2a..db7651e3 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/CorsFilter.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/CorsFilter.java @@ -8,7 +8,7 @@ import org.noear.solon.core.handle.FilterChain; /** * 跨域过滤器 - * @author kong + * @author click33 */ @Component(index = -200) public class CorsFilter implements Filter { diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java index c585aeaa..566af4f3 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java @@ -14,7 +14,7 @@ import org.noear.solon.core.handle.Render; /** * 前后台分离架构下集成SSO所需的代码 (SSO-Server端) *

(注:如果不需要前后端分离架构下集成SSO,可删除此包下所有代码)

- * @author kong + * @author click33 * */ @Controller diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/GlobalExceptionFilter.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/GlobalExceptionFilter.java index 7d56ad3a..fc311ae3 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/GlobalExceptionFilter.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/GlobalExceptionFilter.java @@ -9,7 +9,7 @@ import org.noear.solon.core.handle.FilterChain; /** * 全局异常处理 - * @author kong + * @author click33 * */ @Component diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java index 4eb6acd9..36318606 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java @@ -7,7 +7,7 @@ import org.noear.solon.annotation.Mapping; /** * Sa-Token-SSO Server端 Controller - * @author kong + * @author click33 * */ @Controller diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java index f45f82dc..c3718225 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java @@ -6,7 +6,7 @@ import org.noear.solon.annotation.SolonMain; /** * SSO模式一,Client端 Demo - * @author kong + * @author click33 * */ @SolonMain diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java index 90c3fc48..f6251b81 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java @@ -12,7 +12,7 @@ import org.noear.solon.core.handle.Render; /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @Controller public class SsoClientController implements Render { diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/CorsFilter.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/CorsFilter.java index f7a95bc0..547aebed 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/CorsFilter.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/CorsFilter.java @@ -8,7 +8,7 @@ import org.noear.solon.core.handle.FilterChain; /** * 跨域过滤器 - * @author kong + * @author click33 */ @Component(index = -200) public class CorsFilter implements Filter { diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java index efa3d801..1fbd1d87 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java @@ -12,7 +12,7 @@ import org.noear.solon.core.handle.Render; /** * 前后台分离架构下集成SSO所需的代码 (SSO-Client端) *

(注:如果不需要前后端分离架构下集成SSO,可删除此包下所有代码)

- * @author kong + * @author click33 * */ @Controller diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java index 510b8b92..edd3f8fe 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java @@ -13,7 +13,7 @@ import org.noear.solon.core.handle.Render; /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @Controller public class SsoClientController implements Render { diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java index 4bf81034..7567de9f 100644 --- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java @@ -13,7 +13,7 @@ import org.noear.solon.core.handle.Render; /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @Controller public class SsoClientController implements Render { diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/CorsFilter.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/CorsFilter.java index dd942224..f705fecf 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/CorsFilter.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/CorsFilter.java @@ -16,7 +16,7 @@ import org.springframework.stereotype.Component; /** * 跨域过滤器 - * @author kong + * @author click33 */ @Component @Order(-200) diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java index a974ae15..1ebe3f9a 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 前后台分离架构下集成SSO所需的代码 (SSO-Server端) *

(注:如果不需要前后端分离架构下集成SSO,可删除此包下所有代码)

- * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/GlobalExceptionHandler.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/GlobalExceptionHandler.java index 3438e440..12e3ae84 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/GlobalExceptionHandler.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/GlobalExceptionHandler.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaResult; /** * 全局异常处理 - * @author kong + * @author click33 * */ @RestControllerAdvice diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java index d399e905..582b4388 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java @@ -14,7 +14,7 @@ import org.springframework.web.servlet.ModelAndView; /** * Sa-Token-SSO Server端 Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java index eb4a8155..b5347d94 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java @@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * SSO模式一,Client端 Demo - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java index 2dbd0c33..0174ca9a 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @RestController public class SsoClientController { diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/CorsFilter.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/CorsFilter.java index 02590e5a..6f5193b6 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/CorsFilter.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/CorsFilter.java @@ -16,7 +16,7 @@ import org.springframework.stereotype.Component; /** * 跨域过滤器 - * @author kong + * @author click33 */ @Component @Order(-200) diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java index b6279bad..acc1958d 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.util.SaResult; /** * 前后台分离架构下集成SSO所需的代码 (SSO-Client端) *

(注:如果不需要前后端分离架构下集成SSO,可删除此包下所有代码)

- * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java index 91746032..05571649 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @RestController public class SsoClientController { diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoClientController.java index 051d92fa..243a0550 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoClientController.java @@ -17,7 +17,7 @@ import com.pj.sso.util.MyHttpSessionHolder; /** * SSO Client端 Controller - * @author kong + * @author click33 */ @RestController public class SsoClientController { diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java index bfc11e6c..4365f3f5 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/SsoRequestUtil.java @@ -12,7 +12,7 @@ import com.pj.sso.util.AjaxJson; /** * 封装一些 sso 共用方法 * - * @author kong + * @author click33 * @since: 2022-4-30 */ public class SsoRequestUtil { diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/util/MyHttpSessionHolder.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/util/MyHttpSessionHolder.java index dbc39e2e..dc580d19 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/util/MyHttpSessionHolder.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client-nosdk/src/main/java/com/pj/sso/util/MyHttpSessionHolder.java @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; * * 此种方式有性能问题,仅做demo示例,真实项目中请更换为其它方案记录用户会话数据 * - * @author kong + * @author click33 * @since: 2022-4-30 */ @Component diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java index adbcbeef..0945a73d 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java @@ -16,7 +16,7 @@ import java.util.Map; /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @RestController public class SsoClientController { diff --git a/sa-token-demo/sa-token-demo-test/pom.xml b/sa-token-demo/sa-token-demo-test/pom.xml index 18fffb8d..685a6122 100644 --- a/sa-token-demo/sa-token-demo-test/pom.xml +++ b/sa-token-demo/sa-token-demo-test/pom.xml @@ -18,6 +18,7 @@ 1.34.0 + com.pj.SaTokenApplication @@ -38,7 +39,13 @@ sa-token-spring-boot-starter ${sa-token.version} - + + + cn.hutool + hutool-all + 5.8.16 + + + + + + + src/main/java + + **/*.xml + + + + src/main/resources + + **/*.* + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + lib/ + ${java.run.main.class} + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy-dependencies + + + + ${project.build.directory}/lib + + + + + + + \ No newline at end of file diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java index ef69b80c..08eaed43 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java @@ -1,13 +1,13 @@ package com.pj; import cn.dev33.satoken.SaManager; -import cn.dev33.satoken.filter.SaServletFilter; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; + /** * Sa-Token 测试 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/current/NotFoundHandle.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/current/NotFoundHandle.java index 1e82e95a..81ff22e8 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/current/NotFoundHandle.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/current/NotFoundHandle.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 处理 404 - * @author kong + * @author click33 */ @RestController public class NotFoundHandle implements ErrorController { diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/model/SysUser.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/model/SysUser.java index 3e3a2f22..8291aee7 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/model/SysUser.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/model/SysUser.java @@ -3,7 +3,7 @@ package com.pj.model; /** * User 实体类 * - * @author kong + * @author click33 * @since 2022-10-15 */ public class SysUser { diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaLogForSlf4j.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaLogForSlf4j.java index 59d0a8dd..106506c7 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaLogForSlf4j.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaLogForSlf4j.java @@ -1,14 +1,13 @@ package com.pj.satoken; +import cn.dev33.satoken.log.SaLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import cn.dev33.satoken.log.SaLog; - /** * 将 Sa-Token log 信息转接到 Slf4j * - * @author kong + * @author click33 * @since 2022-11-2 */ //@Component @@ -33,7 +32,7 @@ public class SaLogForSlf4j implements SaLog { @Override public void warn(String str, Object... args) { - log.trace(str, args); + log.warn(str, args); } @Override diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaTokenConfigure.java index a78355f1..2d8eeff9 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.util.SaResult; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java index f969c2e7..7431acec 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.stp.StpLogic; /** * Sa-Token 权限认证工具类 (User版) - * @author kong + * @author click33 */ @Component public class StpUserUtil { diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/AtController.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/AtController.java index dc7c6f95..3af4c603 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/AtController.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/AtController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 注解鉴权测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/LoginController.java index ea94cfa7..34eea9a1 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/StressTestController.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/StressTestController.java index a2384567..b4273109 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/StressTestController.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/StressTestController.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * 压力测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java index 2d692f49..39433de4 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RestController; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/util/Ttime.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/util/Ttime.java index cb17dcaa..dec4f1cb 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/util/Ttime.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/util/Ttime.java @@ -3,7 +3,7 @@ package com.pj.util; /** * 用于测试用时 - * @author kong + * @author click33 * */ public class Ttime { diff --git a/sa-token-demo/sa-token-demo-test/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-test/src/main/resources/application.yml index e6a2ffa7..221cb0f1 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/resources/application.yml +++ b/sa-token-demo/sa-token-demo-test/src/main/resources/application.yml @@ -17,7 +17,7 @@ sa-token: # token风格 token-style: uuid # 是否输出操作日志 - is-log: false + is-log: true spring: # redis配置 diff --git a/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/satoken/SaTokenConfigure.java index c0cce23d..52881c60 100644 --- a/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.thymeleaf.dialect.SaTokenDialect; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/test/TestController.java index ad2f4a8d..d9a85afd 100644 --- a/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-thymeleaf/src/main/java/com/pj/test/TestController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token-SSO Server端 Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/SaTokenWebfluxSpringboot3Application.java b/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/SaTokenWebfluxSpringboot3Application.java index 2f1fc607..10d78354 100644 --- a/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/SaTokenWebfluxSpringboot3Application.java +++ b/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/SaTokenWebfluxSpringboot3Application.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token整合webflux 示例 (springboot3) * - * @author kong + * @author click33 * @since 2023年1月3日 * */ diff --git a/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/satoken/SaTokenConfigure.java index 7dfe7b7c..287f9401 100644 --- a/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.reactor.filter.SaReactorFilter; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/test/TestController.java index d678cb08..e3d4ea72 100644 --- a/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-webflux-springboot3/src/main/java/com/pj/test/TestController.java @@ -14,7 +14,7 @@ import reactor.core.publisher.Mono; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/SaTokenWebfluxApplication.java b/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/SaTokenWebfluxApplication.java index 77946d3f..1965b02a 100644 --- a/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/SaTokenWebfluxApplication.java +++ b/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/SaTokenWebfluxApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token整合webflux 示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java index 7dfe7b7c..287f9401 100644 --- a/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.reactor.filter.SaReactorFilter; /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/test/TestController.java index d678cb08..e3d4ea72 100644 --- a/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-webflux/src/main/java/com/pj/test/TestController.java @@ -14,7 +14,7 @@ import reactor.core.publisher.Mono; /** * 测试专用Controller - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/SaTokenWebSocketSpringApplication.java b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/SaTokenWebSocketSpringApplication.java index 431fab28..35ea8291 100644 --- a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/SaTokenWebSocketSpringApplication.java +++ b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/SaTokenWebSocketSpringApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token 整合 WebSocket 鉴权示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/test/LoginController.java index 11abbe3c..78f2ddc8 100644 --- a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/MyWebSocketHandler.java b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/MyWebSocketHandler.java index 6bfdd8e0..5619c91f 100644 --- a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/MyWebSocketHandler.java +++ b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/MyWebSocketHandler.java @@ -11,7 +11,7 @@ import org.springframework.web.socket.handler.TextWebSocketHandler; /** * 处理 WebSocket 连接 * - * @author kong + * @author click33 * @since: 2022-2-11 */ public class MyWebSocketHandler extends TextWebSocketHandler { diff --git a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketConfig.java b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketConfig.java index 7c29ff93..38c70e8f 100644 --- a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketConfig.java +++ b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketConfig.java @@ -8,7 +8,7 @@ import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry /** * WebSocket 相关配置 * - * @author kong + * @author click33 * @since: 2022-2-11 */ @Configuration diff --git a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketInterceptor.java b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketInterceptor.java index 6e253a14..26a7f68a 100644 --- a/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketInterceptor.java +++ b/sa-token-demo/sa-token-demo-websocket-spring/src/main/java/com/pj/ws/WebSocketInterceptor.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * WebSocket 握手的前置拦截器 * - * @author kong + * @author click33 * @since: 2022-2-11 */ public class WebSocketInterceptor implements HandshakeInterceptor { diff --git a/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/SaTokenWebSocketApplication.java b/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/SaTokenWebSocketApplication.java index 6450ede8..97922289 100644 --- a/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/SaTokenWebSocketApplication.java +++ b/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/SaTokenWebSocketApplication.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.SaManager; /** * Sa-Token 整合 WebSocket 鉴权示例 - * @author kong + * @author click33 * */ @SpringBootApplication diff --git a/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/test/LoginController.java b/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/test/LoginController.java index 11abbe3c..78f2ddc8 100644 --- a/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/test/LoginController.java +++ b/sa-token-demo/sa-token-demo-websocket/src/main/java/com/pj/test/LoginController.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-doc/fun/log.md b/sa-token-doc/fun/log.md index 169b180d..79bfdb53 100644 --- a/sa-token-doc/fun/log.md +++ b/sa-token-doc/fun/log.md @@ -49,7 +49,7 @@ public class SaLogForSlf4j implements SaLog { } @Override public void warn(String str, Object... args) { - log.trace(str, args); + log.warn(str, args); } @Override public void error(String str, Object... args) { diff --git a/sa-token-doc/micro/gateway-auth.md b/sa-token-doc/micro/gateway-auth.md index aa9c8a01..6e764551 100644 --- a/sa-token-doc/micro/gateway-auth.md +++ b/sa-token-doc/micro/gateway-auth.md @@ -84,7 +84,7 @@ public class StpInterfaceImpl implements StpInterface { ``` java /** * [Sa-Token 权限认证] 配置类 - * @author kong + * @author click33 */ @Configuration public class SaTokenConfigure { diff --git a/sa-token-doc/sso/sso-type1.md b/sa-token-doc/sso/sso-type1.md index 2b12a388..ad6ccfbf 100644 --- a/sa-token-doc/sso/sso-type1.md +++ b/sa-token-doc/sso/sso-type1.md @@ -127,7 +127,7 @@ implementation 'cn.dev33:sa-token-alone-redis:${sa.top.version}' ``` java /** * Sa-Token-SSO Client端 Controller - * @author kong + * @author click33 */ @RestController public class SsoClientController { diff --git a/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java b/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java index 766c43ab..ff5b1fa5 100644 --- a/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java +++ b/sa-token-plugin/sa-token-alone-redis/src/main/java/cn/dev33/satoken/dao/alone/SaAloneRedisInject.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; /** * 为 SaTokenDao 单独设置Redis连接信息 - * @author kong + * @author click33 */ @Configuration public class SaAloneRedisInject implements EnvironmentAware{ diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextCreatorForDubbo.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextCreatorForDubbo.java index 7c2ca61b..a80e1ea0 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextCreatorForDubbo.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextCreatorForDubbo.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.context.second.SaTokenSecondContextCreator; /** * Sa-Token 二级Context - 创建器 [Dubbo版] * - * @author kong + * @author click33 * */ public class SaTokenSecondContextCreatorForDubbo implements SaTokenSecondContextCreator { diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextForDubbo.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextForDubbo.java index 5d4a10af..0029c967 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextForDubbo.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/SaTokenSecondContextForDubbo.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.exception.ApiDisabledException; /** * Sa-Token 上下文 [Dubbo版本] * - * @author kong + * @author click33 * */ public class SaTokenSecondContextForDubbo implements SaTokenSecondContext { diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java index 70c0b929..b2a85afe 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java @@ -19,7 +19,7 @@ import cn.dev33.satoken.util.SaTokenConsts; * * Sa-Token 整合 Dubbo Consumer端过滤器 * - * @author kong + * @author click33 * */ @Activate(group = {CommonConstants.CONSUMER}, order = -30000) diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java index ba0bd635..7c8c1091 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.same.SaSameUtil; * * Sa-Token 整合 Dubbo Provider端过滤器 * - * @author kong + * @author click33 * */ @Activate(group = {CommonConstants.PROVIDER}, order = -30000) diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaRequestForDubbo.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaRequestForDubbo.java index 9ee00aea..702319c8 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaRequestForDubbo.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaRequestForDubbo.java @@ -10,7 +10,7 @@ import java.util.Map; /** * Request for Dubbo * - * @author kong + * @author click33 * */ public class SaRequestForDubbo implements SaRequest { diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaResponseForDubbo.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaResponseForDubbo.java index fc28ffe6..90986cf4 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaResponseForDubbo.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaResponseForDubbo.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.context.model.SaResponse; /** * Response for Servlet - * @author kong + * @author click33 * */ public class SaResponseForDubbo implements SaResponse { diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaStorageForDubbo.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaStorageForDubbo.java index b853e7a0..8a1e9a24 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaStorageForDubbo.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/model/SaStorageForDubbo.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * Storage for Servlet - * @author kong + * @author click33 * */ public class SaStorageForDubbo implements SaStorage { diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextCreatorForDubbo3.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextCreatorForDubbo3.java index 4494dbab..8f21aa1a 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextCreatorForDubbo3.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextCreatorForDubbo3.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.context.second.SaTokenSecondContextCreator; /** * Sa-Token 二级Context - 创建器 [Dubbo3版] * - * @author kong + * @author click33 * */ public class SaTokenSecondContextCreatorForDubbo3 implements SaTokenSecondContextCreator { diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextForDubbo3.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextForDubbo3.java index c254ff0c..e2194027 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextForDubbo3.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/SaTokenSecondContextForDubbo3.java @@ -13,7 +13,7 @@ import org.apache.dubbo.rpc.RpcContext; /** * Sa-Token 上下文 [Dubbo3版本] * - * @author kong + * @author click33 * */ public class SaTokenSecondContextForDubbo3 implements SaTokenSecondContext { diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java index cc63a641..c9ed3921 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java @@ -13,7 +13,7 @@ import org.apache.dubbo.rpc.*; * * Sa-Token 整合 Dubbo3 Consumer端过滤器 * - * @author kong + * @author click33 * */ @Activate(group = {CommonConstants.CONSUMER}, order = -30000) diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ProviderFilter.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ProviderFilter.java index a353c9ac..a42ff049 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ProviderFilter.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ProviderFilter.java @@ -10,7 +10,7 @@ import org.apache.dubbo.rpc.*; * * Sa-Token 整合 Dubbo3 Provider端过滤器 * - * @author kong + * @author click33 * */ @Activate(group = {CommonConstants.PROVIDER}, order = -30000) diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaRequestForDubbo3.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaRequestForDubbo3.java index b2efb9fd..a1135c29 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaRequestForDubbo3.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaRequestForDubbo3.java @@ -9,7 +9,7 @@ import java.util.Map; /** * Request for Dubbo3 * - * @author kong + * @author click33 * */ public class SaRequestForDubbo3 implements SaRequest { diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaResponseForDubbo3.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaResponseForDubbo3.java index 59e933da..5e3fff3f 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaResponseForDubbo3.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaResponseForDubbo3.java @@ -6,7 +6,7 @@ import org.apache.dubbo.rpc.RpcContext; /** * Response for Servlet - * @author kong + * @author click33 * */ public class SaResponseForDubbo3 implements SaResponse { diff --git a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaStorageForDubbo3.java b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaStorageForDubbo3.java index 686ae5e2..3b56b4c8 100644 --- a/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaStorageForDubbo3.java +++ b/sa-token-plugin/sa-token-context-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/model/SaStorageForDubbo3.java @@ -6,7 +6,7 @@ import org.apache.dubbo.rpc.RpcContext; /** * Storage for Servlet - * @author kong + * @author click33 * */ public class SaStorageForDubbo3 implements SaStorage { diff --git a/sa-token-plugin/sa-token-dao-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java b/sa-token-plugin/sa-token-dao-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java index 1c072fbc..9802fa53 100644 --- a/sa-token-plugin/sa-token-dao-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java +++ b/sa-token-plugin/sa-token-dao-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjsonCustomized.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Fastjson 定制版 SaSession,重写类型转换API * - * @author kong + * @author click33 * @since 2022-10-19 */ public class SaSessionForFastjsonCustomized extends SaSession { diff --git a/sa-token-plugin/sa-token-dao-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java b/sa-token-plugin/sa-token-dao-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java index 8ea39cf2..73a81591 100644 --- a/sa-token-plugin/sa-token-dao-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java +++ b/sa-token-plugin/sa-token-dao-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaSessionForFastjson2Customized.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Fastjson 定制版 SaSession,重写类型转换API * - * @author kong + * @author click33 * @since 2022-10-19 */ public class SaSessionForFastjson2Customized extends SaSession { diff --git a/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java b/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java index 4175f537..8c90b91c 100644 --- a/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java +++ b/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.session.SaSession; /** * Jackson定制版SaSession,忽略 timeout 等属性的序列化 * - * @author kong + * @author click33 * */ @JsonIgnoreProperties({"timeout"}) diff --git a/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java b/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java index 538bbe40..cc8da95f 100644 --- a/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java +++ b/sa-token-plugin/sa-token-dao-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java @@ -34,7 +34,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token 持久层实现 [Redis存储、Jackson序列化] * - * @author kong + * @author click33 * */ @Component diff --git a/sa-token-plugin/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java b/sa-token-plugin/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java index 7bda2fa7..5c171dcb 100644 --- a/sa-token-plugin/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java +++ b/sa-token-plugin/sa-token-dao-redis/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedis.java @@ -18,7 +18,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token 持久层实现 [Redis存储、JDK默认序列化] * - * @author kong + * @author click33 * */ @Component diff --git a/sa-token-plugin/sa-token-dao-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java b/sa-token-plugin/sa-token-dao-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java index d4505508..bff900c9 100644 --- a/sa-token-plugin/sa-token-dao-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java +++ b/sa-token-plugin/sa-token-dao-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaSessionForJacksonCustomized.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; /** * Jackson定制版SaSession,忽略 timeout 等属性的序列化 * - * @author kong + * @author click33 * */ @JsonIgnoreProperties({"timeout"}) diff --git a/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenDialect.java b/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenDialect.java index a1100368..d95484a2 100644 --- a/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenDialect.java +++ b/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenDialect.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token 集成 Thymeleaf 标签方言 * - * @author kong + * @author click33 * */ public class SaTokenDialect extends AbstractProcessorDialect { diff --git a/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenTagProcessor.java b/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenTagProcessor.java index 2841d10f..ad970276 100644 --- a/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenTagProcessor.java +++ b/sa-token-plugin/sa-token-dialect-thymeleaf/src/main/java/cn/dev33/satoken/thymeleaf/dialect/SaTokenTagProcessor.java @@ -11,7 +11,7 @@ import org.thymeleaf.templatemode.TemplateMode; /** * 封装 Sa-Token 标签方言处理器 - * @author kong + * @author click33 * */ public class SaTokenTagProcessor extends AbstractAttributeTagProcessor { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtTemplate.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtTemplate.java index 4b5e7a75..1243f5d6 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtTemplate.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtTemplate.java @@ -13,7 +13,7 @@ import cn.hutool.jwt.JWTException; /** * jwt 操作模板方法封装 - * @author kong + * @author click33 * */ public class SaJwtTemplate { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java index 70aa435e..b6833f49 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/SaJwtUtil.java @@ -7,7 +7,7 @@ import cn.hutool.jwt.JWT; /** * jwt 操作工具类封装 - * @author kong + * @author click33 * */ public class SaJwtUtil { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java index 5b2612bb..9bbcf349 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * Sa-Token 整合 jwt -- Mixin 混入模式 - * @author kong + * @author click33 * */ public class StpLogicJwtForMixin extends StpLogic { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForSimple.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForSimple.java index 85b1acf6..322d25b9 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForSimple.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForSimple.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * Sa-Token 整合 jwt -- Simple 简单模式 - * @author kong + * @author click33 * */ public class StpLogicJwtForSimple extends StpLogic { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java index e521e15d..f6c72a37 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForStateless.java @@ -16,7 +16,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token 整合 jwt -- Stateless 无状态模式 - * @author kong + * @author click33 * */ public class StpLogicJwtForStateless extends StpLogic { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/error/SaJwtErrorCode.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/error/SaJwtErrorCode.java index 879462da..606c4ee8 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/error/SaJwtErrorCode.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/error/SaJwtErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.jwt.error; /** * 定义 sa-token-jwt 所有异常细分状态码 * - * @author kong + * @author click33 * @since 2022-10-31 */ public class SaJwtErrorCode { diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/exception/SaJwtException.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/exception/SaJwtException.java index ad976182..901924c2 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/exception/SaJwtException.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/exception/SaJwtException.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * 一个异常:代表 jwt 相关错误 * - * @author kong + * @author click33 * @since 2022-10-31 */ public class SaJwtException extends SaTokenException { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java index 2ad2854b..823ff2f8 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java @@ -5,7 +5,7 @@ import cn.dev33.satoken.oauth2.config.SaOAuth2Config; /** * Sa-Token-OAuth2 模块 总控类 * - * @author kong + * @author click33 * */ public class SaOAuth2Manager { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/config/SaOAuth2Config.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/config/SaOAuth2Config.java index f9464bd7..ca14c581 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/config/SaOAuth2Config.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/config/SaOAuth2Config.java @@ -8,7 +8,7 @@ import java.util.function.Supplier; /** * Sa-Token-OAuth2 配置类 Model - * @author kong + * @author click33 * */ public class SaOAuth2Config implements Serializable { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/error/SaOAuth2ErrorCode.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/error/SaOAuth2ErrorCode.java index 3c7791ba..412a686a 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/error/SaOAuth2ErrorCode.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/error/SaOAuth2ErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.oauth2.error; /** * 定义 sa-token-oauth2 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-31 */ public interface SaOAuth2ErrorCode { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/exception/SaOAuth2Exception.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/exception/SaOAuth2Exception.java index fc2193f8..b9483eb2 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/exception/SaOAuth2Exception.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/exception/SaOAuth2Exception.java @@ -5,7 +5,7 @@ import cn.dev33.satoken.exception.SaTokenException; /** * 一个异常:代表OAuth2认证流程错误 * - * @author kong + * @author click33 */ public class SaOAuth2Exception extends SaTokenException { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Consts.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Consts.java index a538be55..770e08e2 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Consts.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Consts.java @@ -2,14 +2,14 @@ package cn.dev33.satoken.oauth2.logic; /** * Sa-Token-OAuth2 所有常量 - * @author kong + * @author click33 * */ public class SaOAuth2Consts { /** * 所有API接口 - * @author kong + * @author click33 */ public static final class Api { public static String authorize = "/oauth2/authorize"; @@ -23,7 +23,7 @@ public class SaOAuth2Consts { /** * 所有参数名称 - * @author kong + * @author click33 */ public static final class Param { public static String response_type = "response_type"; diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Handle.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Handle.java index 246b7617..599df878 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Handle.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Handle.java @@ -21,7 +21,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token-OAuth2 请求处理类封装 - * @author kong + * @author click33 * */ public class SaOAuth2Handle { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java index 7eabaad0..1b5d1085 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java @@ -19,7 +19,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token-OAuth2 模块 代码实现 - * @author kong + * @author click33 * */ public class SaOAuth2Template { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java index 3c4acad4..69b27f2b 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.oauth2.model.SaClientModel; /** * Sa-Token-OAuth2 模块 工具类 - * @author kong + * @author click33 * */ public class SaOAuth2Util { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/AccessTokenModel.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/AccessTokenModel.java index f4528450..7309c871 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/AccessTokenModel.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/AccessTokenModel.java @@ -6,7 +6,7 @@ import java.util.Map; /** * Model: Access-Token - * @author kong + * @author click33 * */ public class AccessTokenModel implements Serializable { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/ClientTokenModel.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/ClientTokenModel.java index 681acb02..1218c66e 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/ClientTokenModel.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/ClientTokenModel.java @@ -6,7 +6,7 @@ import java.util.Map; /** * Model: Client-Token - * @author kong + * @author click33 * */ public class ClientTokenModel implements Serializable { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/CodeModel.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/CodeModel.java index 774083fc..0d87f784 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/CodeModel.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/CodeModel.java @@ -4,7 +4,7 @@ import java.io.Serializable; /** * Model: 授权码 - * @author kong + * @author click33 * */ public class CodeModel implements Serializable { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RefreshTokenModel.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RefreshTokenModel.java index 4414d56d..f68ff848 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RefreshTokenModel.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RefreshTokenModel.java @@ -4,7 +4,7 @@ import java.io.Serializable; /** * Model: Refresh-Token - * @author kong + * @author click33 * */ public class RefreshTokenModel implements Serializable { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RequestAuthModel.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RequestAuthModel.java index 511677cf..0bc441b5 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RequestAuthModel.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/RequestAuthModel.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * 请求授权参数的Model - * @author kong + * @author click33 * */ public class RequestAuthModel implements Serializable { diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/SaClientModel.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/SaClientModel.java index 7d86744b..02f87cfe 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/SaClientModel.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/model/SaClientModel.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.oauth2.config.SaOAuth2Config; /** * Client应用信息 Model - * @author kong + * @author click33 * */ public class SaClientModel implements Serializable { diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickInject.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickInject.java index b73c9da4..8e40894c 100644 --- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickInject.java +++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickInject.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.quick.web.SaQuickController; /** * Quick-Bean 注入 * - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickManager.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickManager.java index aa9c6568..09f51061 100644 --- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickManager.java +++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickManager.java @@ -5,7 +5,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * SaQuickManager - * @author kong + * @author click33 * */ public class SaQuickManager { diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickRegister.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickRegister.java index a5d407c4..07fd12d4 100644 --- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickRegister.java +++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/SaQuickRegister.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * Quick-Bean 注册 * - * @author kong + * @author click33 * */ @Configuration diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/config/SaQuickConfig.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/config/SaQuickConfig.java index 86705670..4469df2d 100644 --- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/config/SaQuickConfig.java +++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/config/SaQuickConfig.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.quick.config; /** * sa-quick 配置类 Model * - * @author kong + * @author click33 * */ public class SaQuickConfig { diff --git a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java index b3d5c5bd..dd3a2581 100644 --- a/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java +++ b/sa-token-plugin/sa-token-quick-login/src/main/java/cn/dev33/satoken/quick/web/SaQuickController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录Controller - * @author kong + * @author click33 * */ @Controller diff --git a/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java b/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java index 415d8b59..8e102142 100644 --- a/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java +++ b/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java @@ -17,7 +17,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * sa-token 基于 Spring Aop 的注解鉴权 * - * @author kong + * @author click33 */ @Aspect @Component diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java index 8909fcd8..184dc506 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java @@ -13,7 +13,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token SSO 单点登录模块 配置类 Model - * @author kong + * @author click33 * */ public class SaSsoConfig implements Serializable { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java index 564caadd..7f9dc7b1 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java @@ -2,7 +2,7 @@ package cn.dev33.satoken.sso; /** * Sa-Token-SSO模块相关常量 - * @author kong + * @author click33 * */ public class SaSsoConsts { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoManager.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoManager.java index 9835a76b..16dac10b 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoManager.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoManager.java @@ -5,7 +5,7 @@ import cn.dev33.satoken.config.SaSsoConfig; /** * Sa-Token-SSO 模块 总控类 * - * @author kong + * @author click33 * */ public class SaSsoManager { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java index b75702bd..2023cb41 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.util.SaResult; /** * SSO 请求处理器 * - * @author kong + * @author click33 * @since 2022-10-25 */ public class SaSsoProcessor { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java index 4386090a..25ea17a9 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java @@ -18,7 +18,7 @@ import java.util.*; /** * Sa-Token-SSO 单点登录模块 - * @author kong + * @author click33 * */ public class SaSsoTemplate { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java index a4fc2880..1cd602fd 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java @@ -6,7 +6,7 @@ import java.util.Map; /** * Sa-Token-SSO 单点登录模块 工具类 - * @author kong + * @author click33 * */ public class SaSsoUtil { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/error/SaSsoErrorCode.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/error/SaSsoErrorCode.java index 0763086f..8b0cdfac 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/error/SaSsoErrorCode.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/error/SaSsoErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.sso.error; /** * 定义 sa-token-sso 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-31 */ public interface SaSsoErrorCode { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/exception/SaSsoException.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/exception/SaSsoException.java index bfb926fe..252da4c7 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/exception/SaSsoException.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/exception/SaSsoException.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.exception.SaTokenException; /** * 一个异常:代表 SSO 认证流程错误 * - * @author kong + * @author click33 */ public class SaSsoException extends SaTokenException { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ApiName.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ApiName.java index b3069532..3b99e959 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ApiName.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ApiName.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.sso.name; /** * SSO 模块所有 API 路由名称定义 * - * @author kong + * @author click33 * @since 2022-10-25 */ public class ApiName { diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ParamName.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ParamName.java index d2efb197..bb5e1fc5 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ParamName.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ParamName.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.sso.name; /** * SSO 模块所有参数名称定义 * - * @author kong + * @author click33 * @since 2022-10-25 */ public class ParamName { diff --git a/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaJwtUtil.java b/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaJwtUtil.java index 2898bf0e..93c17d5e 100644 --- a/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaJwtUtil.java +++ b/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaJwtUtil.java @@ -10,7 +10,7 @@ import io.jsonwebtoken.SignatureAlgorithm; /** * jwt操作工具类 - * @author kong + * @author click33 * */ public class SaJwtUtil { diff --git a/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaTempForJwt.java b/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaTempForJwt.java index 624bdb84..0e8f6222 100644 --- a/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaTempForJwt.java +++ b/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/SaTempForJwt.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Sa-Token 临时令牌验证模块接口 JWT实现类 - * @author kong + * @author click33 * */ public class SaTempForJwt implements SaTempInterface { diff --git a/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/error/SaTempJwtErrorCode.java b/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/error/SaTempJwtErrorCode.java index 97000044..128815a7 100644 --- a/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/error/SaTempJwtErrorCode.java +++ b/sa-token-plugin/sa-token-temp-jwt/src/main/java/cn/dev33/satoken/temp/jwt/error/SaTempJwtErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.temp.jwt.error; /** * 定义 sa-token-temp-jwt 所有异常细分状态码 * - * @author kong + * @author click33 * @since 2022-10-31 */ public class SaTempJwtErrorCode { diff --git a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java index 5298f39a..9aa8a325 100644 --- a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java +++ b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.servlet.error; /** * 定义 sa-token-servlet 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-30 */ public interface SaServletErrorCode { diff --git a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java index 434ac1ee..d7903da4 100644 --- a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java +++ b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java @@ -15,7 +15,7 @@ import java.util.*; /** * Request for Jakarta Servlet - * @author kong + * @author click33 * */ public class SaRequestForServlet implements SaRequest { diff --git a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java index 47c3def0..3eabb238 100644 --- a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java +++ b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java @@ -7,7 +7,7 @@ import jakarta.servlet.http.HttpServletResponse; /** * Response for Jakarta Servlet - * @author kong + * @author click33 * */ public class SaResponseForServlet implements SaResponse { diff --git a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java index e529c0b0..2f1b9ed6 100644 --- a/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java +++ b/sa-token-starter/sa-token-jakarta-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java @@ -5,7 +5,7 @@ import jakarta.servlet.http.HttpServletRequest; /** * Storage for Jakarta Servlet - * @author kong + * @author click33 * */ public class SaStorageForServlet implements SaStorage { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java index 5c3105b5..e110e20c 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java @@ -6,7 +6,7 @@ import reactor.core.publisher.Mono; /** * Reactor上下文操作 [异步] - * @author kong + * @author click33 * */ public class SaReactorHolder { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java index 1c418946..69aeff06 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.reactor.model.SaStorageForReactor; /** * Reactor上下文操作 [同步] - * @author kong + * @author click33 * */ public class SaReactorSyncHolder { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java index 3f631387..b9cc63ff 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.reactor.error; /** * 定义 sa-token-reactor-spring-boot-starter 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-30 */ public interface SaReactorSpringBootErrorCode { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java index b9ec70e5..29d969e3 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java @@ -24,7 +24,7 @@ import reactor.core.publisher.Mono; /** * Reactor全局过滤器 - * @author kong + * @author click33 * */ @Order(SaTokenConsts.ASSEMBLY_ORDER) diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java index 35e58005..2c705557 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java @@ -16,7 +16,7 @@ import java.util.*; /** * Request for Reactor - * @author kong + * @author click33 * */ public class SaRequestForReactor implements SaRequest { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java index 3bd6a28b..46f6f73d 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.context.model.SaResponse; /** * Response for Reactor - * @author kong + * @author click33 * */ public class SaResponseForReactor implements SaResponse { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java index 5cfc080a..7bb94205 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.context.model.SaStorage; /** * Storage for Reactor - * @author kong + * @author click33 * */ public class SaStorageForReactor implements SaStorage { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java index 97912591..fec0ffd6 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.spring.SaPathMatcherHolder; /** * Sa-Token 上下文处理器 [ Spring Reactor 版本实现 ] * - * @author kong + * @author click33 * */ public class SaTokenContextForSpringReactor extends SaTokenContextForThreadLocal { diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java index 3f8ab4f9..2684ab0b 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.context.SaTokenContext; /** * 注册Sa-Token所需要的Bean *

Bean 的注册与注入应该分开在两个文件中,否则在某些场景下会造成循环依赖 - * @author kong + * @author click33 * */ public class SaTokenContextRegister { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java index abd1e0eb..f3211360 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorHolder.java @@ -6,7 +6,7 @@ import reactor.core.publisher.Mono; /** * Reactor上下文操作 [异步] - * @author kong + * @author click33 * */ public class SaReactorHolder { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java index 1c418946..69aeff06 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/context/SaReactorSyncHolder.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.reactor.model.SaStorageForReactor; /** * Reactor上下文操作 [同步] - * @author kong + * @author click33 * */ public class SaReactorSyncHolder { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java index 3f631387..b9cc63ff 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/error/SaReactorSpringBootErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.reactor.error; /** * 定义 sa-token-reactor-spring-boot-starter 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-30 */ public interface SaReactorSpringBootErrorCode { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java index 07207108..1177e3ab 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java @@ -24,7 +24,7 @@ import reactor.core.publisher.Mono; /** * Reactor全局过滤器 - * @author kong + * @author click33 * */ @Order(SaTokenConsts.ASSEMBLY_ORDER) diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java index da8819c0..5e8f4ad2 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaRequestForReactor.java @@ -19,7 +19,7 @@ import java.util.Set; /** * Request for Reactor - * @author kong + * @author click33 * */ public class SaRequestForReactor implements SaRequest { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java index 3bd6a28b..46f6f73d 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaResponseForReactor.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.context.model.SaResponse; /** * Response for Reactor - * @author kong + * @author click33 * */ public class SaResponseForReactor implements SaResponse { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java index 5cfc080a..7bb94205 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/model/SaStorageForReactor.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.context.model.SaStorage; /** * Storage for Reactor - * @author kong + * @author click33 * */ public class SaStorageForReactor implements SaStorage { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java index 97912591..fec0ffd6 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextForSpringReactor.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.spring.SaPathMatcherHolder; /** * Sa-Token 上下文处理器 [ Spring Reactor 版本实现 ] * - * @author kong + * @author click33 * */ public class SaTokenContextForSpringReactor extends SaTokenContextForThreadLocal { diff --git a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java index 3f8ab4f9..2684ab0b 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java +++ b/sa-token-starter/sa-token-reactor-spring-boot3-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenContextRegister.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.context.SaTokenContext; /** * 注册Sa-Token所需要的Bean *

Bean 的注册与注入应该分开在两个文件中,否则在某些场景下会造成循环依赖 - * @author kong + * @author click33 * */ public class SaTokenContextRegister { diff --git a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java index 5298f39a..9aa8a325 100644 --- a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java +++ b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/error/SaServletErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.servlet.error; /** * 定义 sa-token-servlet 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-30 */ public interface SaServletErrorCode { diff --git a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java index 46b457c8..a8558029 100644 --- a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java +++ b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaRequestForServlet.java @@ -16,7 +16,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * Request for Servlet - * @author kong + * @author click33 * */ public class SaRequestForServlet implements SaRequest { diff --git a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java index d86dd593..04f7b5be 100644 --- a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java +++ b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaResponseForServlet.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.servlet.error.SaServletErrorCode; /** * Response for Servlet - * @author kong + * @author click33 * */ public class SaResponseForServlet implements SaResponse { diff --git a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java index bd10b8cd..7e692a56 100644 --- a/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java +++ b/sa-token-starter/sa-token-servlet/src/main/java/cn/dev33/satoken/servlet/model/SaStorageForServlet.java @@ -6,7 +6,7 @@ import cn.dev33.satoken.context.model.SaStorage; /** * Storage for Servlet - * @author kong + * @author click33 * */ public class SaStorageForServlet implements SaStorage { diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/error/SaSolonErrorCode.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/error/SaSolonErrorCode.java index 9173e9c3..c4b66bc9 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/error/SaSolonErrorCode.java +++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/error/SaSolonErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.solon.error; /** * 定义 sa-token-solon-plugin 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-30 */ public interface SaSolonErrorCode { diff --git a/sa-token-starter/sa-token-solon-plugin/src/test/java/demo/Config.java b/sa-token-starter/sa-token-solon-plugin/src/test/java/demo/Config.java index 5893a69b..891be892 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/test/java/demo/Config.java +++ b/sa-token-starter/sa-token-solon-plugin/src/test/java/demo/Config.java @@ -1,42 +1,42 @@ -package demo; - -import org.noear.solon.annotation.Bean; -import org.noear.solon.annotation.Configuration; -import org.noear.solon.core.handle.Filter; - -import cn.dev33.satoken.router.SaRouter; -import cn.dev33.satoken.solon.integration.SaTokenPathFilter; -import cn.dev33.satoken.stp.StpUtil; - -/** - * @author noear 2022/3/30 created - */ -@Configuration -public class Config { - - @Bean - public Filter saTokenFilter() { - return new SaTokenPathFilter() - // 指定 [拦截路由] 与 [放行路由] - .addInclude("/**").addExclude("/favicon.ico") - - // 认证函数: 每次请求执行 - .setAuth(s -> { - SaRouter.match("/**", StpUtil::checkLogin); - - // 根据路由划分模块,不同模块不同鉴权 - SaRouter.match("/user/**", r -> StpUtil.checkPermission("user")); - SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin")); - SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods")); - SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders")); - }) - - // 异常处理函数:每次认证函数发生异常时执行此函数 - .setError(e -> { - System.out.println("---------- sa全局异常 "); - System.out.println(e.getMessage()); - StpUtil.login(123); - return e.getMessage(); - }); - } -} +//package demo; +// +//import org.noear.solon.annotation.Bean; +//import org.noear.solon.annotation.Configuration; +//import org.noear.solon.core.handle.Filter; +// +//import cn.dev33.satoken.router.SaRouter; +//import cn.dev33.satoken.solon.integration.SaTokenPathFilter; +//import cn.dev33.satoken.stp.StpUtil; +// +///** +// * @author noear 2022/3/30 created +// */ +//@Configuration +//public class Config { +// +// @Bean +// public Filter saTokenFilter() { +// return new SaTokenPathFilter() +// // 指定 [拦截路由] 与 [放行路由] +// .addInclude("/**").addExclude("/favicon.ico") +// +// // 认证函数: 每次请求执行 +// .setAuth(s -> { +// SaRouter.match("/**", StpUtil::checkLogin); +// +// // 根据路由划分模块,不同模块不同鉴权 +// SaRouter.match("/user/**", r -> StpUtil.checkPermission("user")); +// SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin")); +// SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods")); +// SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders")); +// }) +// +// // 异常处理函数:每次认证函数发生异常时执行此函数 +// .setError(e -> { +// System.out.println("---------- sa全局异常 "); +// System.out.println(e.getMessage()); +// StpUtil.login(123); +// return e.getMessage(); +// }); +// } +//} diff --git a/sa-token-starter/sa-token-solon-plugin/src/test/java/demo2/Config.java b/sa-token-starter/sa-token-solon-plugin/src/test/java/demo2/Config.java index 7b970b72..5a4affba 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/test/java/demo2/Config.java +++ b/sa-token-starter/sa-token-solon-plugin/src/test/java/demo2/Config.java @@ -1,7 +1,6 @@ package demo2; import cn.dev33.satoken.router.SaRouter; -import cn.dev33.satoken.solon.integration.SaTokenPathInterceptor; import cn.dev33.satoken.stp.StpUtil; import org.noear.solon.Solon; import org.noear.solon.annotation.Bean; @@ -12,32 +11,32 @@ import org.noear.solon.annotation.Configuration; */ @Configuration public class Config { - @Bean - public void saTokenPathInterceptor() { - Solon.app().before(new SaTokenPathInterceptor() - // 指定 [拦截路由] 与 [放行路由] - .addInclude("/**").addExclude("/favicon.ico") - - // 认证函数: 每次请求执行 - .setAuth(s -> { - SaRouter.match("/**", StpUtil::checkLogin); - - // 根据路由划分模块,不同模块不同鉴权 - SaRouter.match("/user/**", r -> StpUtil.checkPermission("user")); - SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin")); - SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods")); - SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders")); - }) - - // 异常处理函数:每次认证函数发生异常时执行此函数 - .setError(e -> { - System.out.println("---------- sa全局异常 "); - System.out.println(e.getMessage()); - StpUtil.login(123); - return e.getMessage(); - }) - ); - } +// @Bean +// public void saTokenPathInterceptor() { +// Solon.app().before(new SaTokenPathInterceptor() +// // 指定 [拦截路由] 与 [放行路由] +// .addInclude("/**").addExclude("/favicon.ico") +// +// // 认证函数: 每次请求执行 +// .setAuth(s -> { +// SaRouter.match("/**", StpUtil::checkLogin); +// +// // 根据路由划分模块,不同模块不同鉴权 +// SaRouter.match("/user/**", r -> StpUtil.checkPermission("user")); +// SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin")); +// SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods")); +// SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders")); +// }) +// +// // 异常处理函数:每次认证函数发生异常时执行此函数 +// .setError(e -> { +// System.out.println("---------- sa全局异常 "); +// System.out.println(e.getMessage()); +// StpUtil.login(123); +// return e.getMessage(); +// }) +// ); +// } @Bean public void saTokenPathInterceptor2() { diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/error/SaSpringBootErrorCode.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/error/SaSpringBootErrorCode.java index c9de6f70..0967cbe1 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/error/SaSpringBootErrorCode.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/error/SaSpringBootErrorCode.java @@ -3,7 +3,7 @@ package cn.dev33.satoken.error; /** * 定义 sa-token-spring-boot-starter 所有异常细分状态码 * - * @author kong + * @author click33 * @since: 2022-10-30 */ public interface SaSpringBootErrorCode { diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java index cdfdffc5..6c1f387d 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java @@ -27,7 +27,7 @@ import cn.dev33.satoken.temp.SaTempInterface; /** * 注入Sa-Token所需要的Bean * - * @author kong + * @author click33 * */ public class SaBeanInject { diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanRegister.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanRegister.java index 5b7ffb1e..02da959c 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanRegister.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaBeanRegister.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.spring.json.SaJsonTemplateForJackson; /** * 注册Sa-Token所需要的Bean *

Bean 的注册与注入应该分开在两个文件中,否则在某些场景下会造成循环依赖 - * @author kong + * @author click33 * */ public class SaBeanRegister { diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaPathMatcherHolder.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaPathMatcherHolder.java index 5824fb0a..99a1db47 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaPathMatcherHolder.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/SaPathMatcherHolder.java @@ -5,7 +5,7 @@ import org.springframework.util.PathMatcher; /** * - * @author kong + * @author click33 * */ public class SaPathMatcherHolder { diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/json/SaJsonTemplateForJackson.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/json/SaJsonTemplateForJackson.java index 14671494..41ad8906 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/json/SaJsonTemplateForJackson.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/json/SaJsonTemplateForJackson.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.json.SaJsonTemplate; /** * JSON 转换器, Jackson 版实现 * - * @author kong + * @author click33 * @since: 2022-4-26 */ public class SaJsonTemplateForJackson implements SaJsonTemplate { diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanInject.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanInject.java index fd0380e8..9d1049d9 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanInject.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanInject.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.oauth2.logic.SaOAuth2Util; /** * 注入 Sa-Token-OAuth2 所需要的Bean * - * @author kong + * @author click33 * */ @ConditionalOnClass(SaOAuth2Manager.class) diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanRegister.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanRegister.java index 0122d0a2..55c8cba2 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanRegister.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/oauth2/SaOAuth2BeanRegister.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.oauth2.config.SaOAuth2Config; /** * 注册 Sa-Token-OAuth2 所需要的Bean - * @author kong + * @author click33 * */ @ConditionalOnClass(SaOAuth2Manager.class) diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanInject.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanInject.java index daf94207..24c86218 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanInject.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanInject.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.sso.SaSsoUtil; /** * 注入 Sa-Token-SSO 所需要的Bean * - * @author kong + * @author click33 * */ @ConditionalOnClass(SaSsoManager.class) diff --git a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanRegister.java b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanRegister.java index ce38e199..83e1605f 100644 --- a/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanRegister.java +++ b/sa-token-starter/sa-token-spring-boot-autoconfig/src/main/java/cn/dev33/satoken/spring/sso/SaSsoBeanRegister.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.sso.SaSsoManager; /** * 注册 Sa-Token-SSO 所需要的Bean - * @author kong + * @author click33 * */ @ConditionalOnClass(SaSsoManager.class) diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java index 15875222..91247fb3 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java @@ -23,7 +23,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * Servlet全局过滤器 - * @author kong + * @author click33 * */ @Order(SaTokenConsts.ASSEMBLY_ORDER) diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java index c1836c82..10737b66 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java @@ -17,7 +17,7 @@ import cn.dev33.satoken.strategy.SaStrategy; /** * Sa-Token 综合拦截器,提供注解鉴权和路由拦截鉴权能力 * - * @author kong + * @author click33 * @since: 2022-8-21 */ public class SaInterceptor implements HandlerInterceptor { diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpring.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpring.java index 403fbfd4..18420f4f 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpring.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpring.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.servlet.model.SaStorageForServlet; /** * Sa-Token 上下文处理器 [ SpringMVC版本实现 ] * - * @author kong + * @author click33 * */ public class SaTokenContextForSpring implements SaTokenContext { diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java index 38fb19b7..ff5de17b 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.context.SaTokenContext; /** * 注册Sa-Token所需要的Bean *

Bean 的注册与注入应该分开在两个文件中,否则在某些场景下会造成循环依赖 - * @author kong + * @author click33 * */ public class SaTokenContextRegister { diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java index 2e9bd116..be96c7d6 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.exception.NotWebContextException; /** * SpringMVC相关操作 - * @author kong + * @author click33 * */ public class SpringMVCUtil { diff --git a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java index 98aa8f0c..6650ab37 100644 --- a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java +++ b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java @@ -22,7 +22,7 @@ import jakarta.servlet.ServletResponse; /** * Servlet全局过滤器 - * @author kong + * @author click33 * */ @Order(SaTokenConsts.ASSEMBLY_ORDER) diff --git a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java index e00450ce..9b5edec2 100644 --- a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java +++ b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java @@ -16,7 +16,7 @@ import jakarta.servlet.http.HttpServletResponse; /** * Sa-Token 综合拦截器,提供注解鉴权和路由拦截鉴权能力 * - * @author kong + * @author click33 * @since: 2022-8-21 */ public class SaInterceptor implements HandlerInterceptor { diff --git a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpringInJakartaServlet.java b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpringInJakartaServlet.java index c07b4a6d..3baa09b5 100644 --- a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpringInJakartaServlet.java +++ b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextForSpringInJakartaServlet.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.servlet.model.SaStorageForServlet; /** * Sa-Token 上下文处理器 [ SpringBoot3 Jakarta Servlet 版 ] * - * @author kong + * @author click33 * */ public class SaTokenContextForSpringInJakartaServlet implements SaTokenContext { diff --git a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java index 7b43b505..05c0e251 100644 --- a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java +++ b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SaTokenContextRegister.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.context.SaTokenContext; /** * SaTokenContext 上下文注册 * - * @author kong + * @author click33 * @since 2023年1月1日 * */ diff --git a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java index a015a8d2..8fc84a33 100644 --- a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java +++ b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/spring/SpringMVCUtil.java @@ -10,7 +10,7 @@ import jakarta.servlet.http.HttpServletResponse; /** * SpringMVC相关操作 - * @author kong + * @author click33 * */ public class SpringMVCUtil { diff --git a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixinTest.java b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixinTest.java index 24e03aae..fab48928 100644 --- a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixinTest.java +++ b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixinTest.java @@ -25,7 +25,7 @@ import cn.hutool.jwt.JWT; /** * Sa-Token 整合 jwt:mixin 模式 测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForSimpleTest.java b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForSimpleTest.java index 0e04ecf8..5e43c25d 100644 --- a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForSimpleTest.java +++ b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForSimpleTest.java @@ -19,7 +19,7 @@ import cn.hutool.jwt.JWT; /** * Sa-Token 整合 jwt:Simple 模式 测试 * - * @author kong + * @author click33 * */ //@RunWith(SpringRunner.class) diff --git a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java index 78793fea..53e0e67c 100644 --- a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java +++ b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java @@ -21,7 +21,7 @@ import cn.hutool.jwt.JWT; /** * Sa-Token 整合 jwt:stateless 模式 测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/application/SaApplicationTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/application/SaApplicationTest.java index 5535fac7..3cd58037 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/application/SaApplicationTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/application/SaApplicationTest.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.context.SaHolder; /** * SaApplication 存取值测试 * - * @author kong + * @author click33 * @since: 2022-9-4 */ public class SaApplicationTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/config/SaTokenConfigTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/config/SaTokenConfigTest.java index c4f7e943..a7887f47 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/config/SaTokenConfigTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/config/SaTokenConfigTest.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.config.SaTokenConfigFactory; /** * 配置类测试 * - * @author kong + * @author click33 * @since: 2022-9-4 */ public class SaTokenConfigTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaCookieTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaCookieTest.java index 6e419ce7..547c87bd 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaCookieTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaCookieTest.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.context.model.SaCookie; /** * SaFoxUtil 工具类测试 * - * @author kong + * @author click33 * @since: 2022-2-8 22:14:25 */ public class SaCookieTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaTokenContextDefaultImplTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaTokenContextDefaultImplTest.java index fed6f81f..c9442516 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaTokenContextDefaultImplTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/context/model/SaTokenContextDefaultImplTest.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.exception.SaTokenException; /** * 默认上下文测试 * - * @author kong + * @author click33 * @since: 2022-9-5 */ public class SaTokenContextDefaultImplTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/dao/SaTokenDaoTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/dao/SaTokenDaoTest.java index f34c6039..78ab1f56 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/dao/SaTokenDaoTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/dao/SaTokenDaoTest.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.session.SaSession; /** * SaTokenDao 持久层 测试 * - * @author kong + * @author click33 * @since: 2022-2-9 15:39:38 */ public class SaTokenDaoTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/fun/IsRunFunctionTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/fun/IsRunFunctionTest.java index 6e9cd19c..f839c96b 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/fun/IsRunFunctionTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/fun/IsRunFunctionTest.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.fun.IsRunFunction; /** * IsRunFunction 测试 * - * @author kong + * @author click33 * @since: 2022-2-9 16:11:10 */ public class IsRunFunctionTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/json/SaJsonTemplateDefaultImplTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/json/SaJsonTemplateDefaultImplTest.java index 40729b5f..e13ed61f 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/json/SaJsonTemplateDefaultImplTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/json/SaJsonTemplateDefaultImplTest.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SoMap; /** * json默认实现类测试 * - * @author kong + * @author click33 * @since: 2022-9-1 */ public class SaJsonTemplateDefaultImplTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaBase64UtilTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaBase64UtilTest.java index f89c9b89..dc17b834 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaBase64UtilTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaBase64UtilTest.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.secure.SaBase64Util; /** * SaBase64Util 测试 * - * @author kong + * @author click33 * @since: 2022-2-9 */ public class SaBase64UtilTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaSecureUtilTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaSecureUtilTest.java index 9bf681fb..5b319cdb 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaSecureUtilTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/secure/SaSecureUtilTest.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.secure.SaSecureUtil; /** * SaSecureUtil 加密工具类 测试 * - * @author kong + * @author click33 * @since: 2022-2-9 */ public class SaSecureUtilTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionCustomUtilTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionCustomUtilTest.java index 9a634aa5..e40995a7 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionCustomUtilTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionCustomUtilTest.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.session.SaSessionCustomUtil; /** * SaSession 测试 * - * @author kong + * @author click33 * @since: 2022-2-9 */ public class SaSessionCustomUtilTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionTest.java index 5cb8d454..1c82229e 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/SaSessionTest.java @@ -15,7 +15,7 @@ import cn.dev33.satoken.session.TokenSign; /** * SaSession 测试 * - * @author kong + * @author click33 * @since: 2022-2-9 */ public class SaSessionTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/TokenSignTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/TokenSignTest.java index dec68792..ce9e7a6a 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/TokenSignTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/session/TokenSignTest.java @@ -8,7 +8,7 @@ import cn.dev33.satoken.session.TokenSign; /** * TokenSign 相关测试 * - * @author kong + * @author click33 * @since: 2022-9-4 */ public class TokenSignTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/sign/SaSignTemplateTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/sign/SaSignTemplateTest.java index 939b8f29..b0995aef 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/sign/SaSignTemplateTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/sign/SaSignTemplateTest.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SoMap; /** * API 接口签名测试 * - * @author kong + * @author click33 * @since: 2022-9-2 */ public class SaSignTemplateTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java index 64e3298b..9a5c5bc0 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/stp/TokenInfoTest.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * Token 参数扩展 * - * @author kong + * @author click33 * @since: 2022-9-5 */ public class TokenInfoTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/temp/SaTempTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/temp/SaTempTest.java index 758a8e8f..7282c110 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/temp/SaTempTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/temp/SaTempTest.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.util.SaTokenConsts; /** * 临时Token模块测试 * - * @author kong + * @author click33 * @since: 2022-9-1 */ public class SaTempTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java index 398a8032..22fff7a6 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java @@ -16,7 +16,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * SaFoxUtil 工具类测试 * - * @author kong + * @author click33 * @since: 2022-2-8 22:14:25 */ public class SaFoxUtilTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaResultTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaResultTest.java index b582ccd2..9e06a514 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaResultTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaResultTest.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.util.SaResult; /** * SaResult 结果集 测试 * - * @author kong + * @author click33 * @since: 2022-2-8 22:14:25 */ public class SaResultTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationController.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationController.java index 6141753d..b053a45b 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationController.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationController.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 测试注解用的Controller * - * @author kong + * @author click33 * @since: 2022-9-2 */ @RestController diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationIgnoreController.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationIgnoreController.java index 3f56393d..1475c97b 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationIgnoreController.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/annotation/SaAnnotationIgnoreController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * 测试注解用的Controller * - * @author kong + * @author click33 * @since: 2022-9-2 */ @SaCheckLogin diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/HandlerException.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/HandlerException.java index 8a7e97ea..75b031f7 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/HandlerException.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/HandlerException.java @@ -14,7 +14,7 @@ import cn.dev33.satoken.util.SaResult; /** * 全局异常处理 - * @author kong + * @author click33 * */ @RestControllerAdvice diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/SaTokenConfigure.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/SaTokenConfigure.java index 2f238a3c..c1cd10b3 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/SaTokenConfigure.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/SaTokenConfigure.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.interceptor.SaInterceptor; /** * Sa-Token 相关配置类 * - * @author kong + * @author click33 * @since: 2022-9-2 */ @Configuration diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/StpInterfaceImpl.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/StpInterfaceImpl.java index 25f24ae2..ea76739e 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/StpInterfaceImpl.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/StpInterfaceImpl.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.util.SaFoxUtil; /** * 自定义权限验证接口扩展 * - * @author kong + * @author click33 * */ @Component diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaOAuth2Template.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaOAuth2Template.java index a93a9c16..b9a96875 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaOAuth2Template.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaOAuth2Template.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.oauth2.logic.SaOAuth2Template; /** * 自定义 Sa-OAuth2 模板方法 * - * @author kong + * @author click33 * @since: 2022-9-5 */ @Component diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaSsoTemplate.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaSsoTemplate.java index 3ab7796f..1f54c781 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaSsoTemplate.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/configure/inject/MySaSsoTemplate.java @@ -7,7 +7,7 @@ import cn.dev33.satoken.sso.SaSsoTemplate; /** * 自定义 Sa-SSO 模板方法 * - * @author kong + * @author click33 * @since: 2022-9-5 */ @Component diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginController.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginController.java index 9d82d10d..a69ea33d 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginController.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginController.java @@ -9,7 +9,7 @@ import cn.dev33.satoken.util.SaResult; /** * 登录测试 * - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginControllerTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginControllerTest.java index 27c102be..d7d665ad 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginControllerTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/login/LoginControllerTest.java @@ -21,7 +21,7 @@ import cn.dev33.satoken.util.SoMap; /** * Sa-Token 登录API测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreController.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreController.java index 939da8fb..eec89d0d 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreController.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreController.java @@ -12,7 +12,7 @@ import cn.dev33.satoken.util.SaResult; /** * 其它测试 * - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreControllerTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreControllerTest.java index 0e52ca4c..8f0da2b0 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreControllerTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/more/MoreControllerTest.java @@ -27,7 +27,7 @@ import cn.dev33.satoken.util.SaResult; /** * 其它测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterController.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterController.java index 579ad1bc..314e91ea 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterController.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * 路由鉴权测试 * - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterControllerTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterControllerTest.java index 70f76168..8a0c23a6 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterControllerTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/RouterControllerTest.java @@ -32,7 +32,7 @@ import cn.dev33.satoken.util.SaResult; /** * C Controller 测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/SaTokenConfigure2.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/SaTokenConfigure2.java index 750904a9..ce4e9e06 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/SaTokenConfigure2.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/router/SaTokenConfigure2.java @@ -17,7 +17,7 @@ import cn.dev33.satoken.util.SaResult; /** * Sa-Token 相关配置类 * - * @author kong + * @author click33 * @since: 2022-9-2 */ @Configuration diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenController.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenController.java index 9d3100b5..c8c27cf9 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenController.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenController.java @@ -10,7 +10,7 @@ import cn.dev33.satoken.util.SaResult; /** * same-token Controller * - * @author kong + * @author click33 * */ @RestController diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenControllerTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenControllerTest.java index a63dbd07..dab7b6a6 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenControllerTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/integrate/same/SaSameTokenControllerTest.java @@ -24,7 +24,7 @@ import cn.dev33.satoken.util.SaResult; /** * same-token Controller 测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/ManyLoginTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/ManyLoginTest.java index 1cfe57aa..e506175b 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/ManyLoginTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/ManyLoginTest.java @@ -19,7 +19,7 @@ import cn.dev33.satoken.stp.StpUtil; /** * Sa-Token 多端登录测试 * - * @author kong + * @author click33 * */ @SpringBootTest(classes = StartUpApplication.class) diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/SpringMVCUtilTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/SpringMVCUtilTest.java index 1eebec11..ffb915a6 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/SpringMVCUtilTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/springboot/SpringMVCUtilTest.java @@ -11,7 +11,7 @@ import cn.dev33.satoken.spring.SpringMVCUtil; /** * SpringMVCUtil 测试 * - * @author kong + * @author click33 * */ public class SpringMVCUtilTest { diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/util/SoMap.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/util/SoMap.java index efdbcb76..3430a67b 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/util/SoMap.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/util/SoMap.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * Map< String, Object> 是最常用的一种Map类型,但是它写着麻烦 *

所以特封装此类,继承Map,进行一些扩展,可以让Map更灵活使用 *

最新:2020-12-10 新增部分构造方法 - * @author kong + * @author click33 */ public class SoMap extends LinkedHashMap {