This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev by this push:
new fb1f42bcf [Improve] Authentication code optimization (#3187)
fb1f42bcf is described below
commit fb1f42bcfa7e2d33cc2f7319c65a83ddde10096f
Author: ChengJie1053 <[email protected]>
AuthorDate: Mon Sep 25 20:28:37 2023 +0800
[Improve] Authentication code optimization (#3187)
* [Improve] Authentication code optimization
* Modify pgsql-schema.sql
* delete SysLog
---
.../main/assembly/script/schema/pgsql-schema.sql | 1 +
.../console/system/authentication/JWTFilter.java | 6 +-
.../console/system/authentication/JWTUtil.java | 14 +++--
.../console/system/authentication/ShiroConfig.java | 70 ++++++++++++----------
.../streampark/console/system/entity/SysLog.java | 55 -----------------
5 files changed, 50 insertions(+), 96 deletions(-)
diff --git
a/streampark-console/streampark-console-service/src/main/assembly/script/schema/pgsql-schema.sql
b/streampark-console/streampark-console-service/src/main/assembly/script/schema/pgsql-schema.sql
index 81dc67f4f..8af5c6a32 100644
---
a/streampark-console/streampark-console-service/src/main/assembly/script/schema/pgsql-schema.sql
+++
b/streampark-console/streampark-console-service/src/main/assembly/script/schema/pgsql-schema.sql
@@ -571,6 +571,7 @@ comment on column "public"."t_team"."id" is 'team id';
comment on column "public"."t_team"."team_name" is 'team name';
comment on column "public"."t_team"."create_time" is 'creation time';
comment on column "public"."t_team"."modify_time" is 'modify time';
+alter table "public"."t_team" add constraint "t_team_pkey" primary key ("id");
create index "un_team_name" on "public"."t_team" using btree (
"team_name" collate "pg_catalog"."default" "pg_catalog"."text_ops" asc nulls
last
);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
index 92ae2416f..3eb1d2540 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTFilter.java
@@ -53,8 +53,8 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
StringUtils.splitByWholeSeparatorPreserveAllTokens(
properties.getAnonUrl(), StringPool.COMMA);
- for (String u : anonUrl) {
- if (pathMatcher.match(u.trim(), httpServletRequest.getRequestURI())) {
+ for (String url : anonUrl) {
+ if (pathMatcher.match(url.trim(), httpServletRequest.getRequestURI())) {
return true;
}
}
@@ -69,7 +69,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
protected boolean isLoginAttempt(ServletRequest request, ServletResponse
response) {
HttpServletRequest req = (HttpServletRequest) request;
String token = req.getHeader(TOKEN);
- return token != null;
+ return StringUtils.isNotBlank(token);
}
@Override
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
index f1b052a23..b3c25aa0d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/JWTUtil.java
@@ -42,6 +42,10 @@ public class JWTUtil {
private static final Algorithm algorithm =
Algorithm.HMAC256(RandomStringUtils.randomAlphanumeric(256));
+ private static final String USER_NAME = "userName";
+
+ private static final String USER_ID = "userId";
+
/**
* verify token
*
@@ -50,7 +54,7 @@ public class JWTUtil {
*/
public static boolean verify(String token, String username) {
try {
- JWTVerifier verifier = JWT.require(algorithm).withClaim("userName",
username).build();
+ JWTVerifier verifier = JWT.require(algorithm).withClaim(USER_NAME,
username).build();
verifier.verify(token);
return true;
} catch (TokenExpiredException e) {
@@ -65,7 +69,7 @@ public class JWTUtil {
public static String getUserName(String token) {
try {
DecodedJWT jwt = JWT.decode(token);
- return jwt.getClaim("userName").asString();
+ return jwt.getClaim(USER_NAME).asString();
} catch (JWTDecodeException e) {
log.error("error:{}", e.getMessage());
return null;
@@ -75,7 +79,7 @@ public class JWTUtil {
public static Long getUserId(String token) {
try {
DecodedJWT jwt = JWT.decode(token);
- return jwt.getClaim("userId").asLong();
+ return jwt.getClaim(USER_ID).asLong();
} catch (JWTDecodeException e) {
log.error("error:{}", e.getMessage());
return null;
@@ -105,8 +109,8 @@ public class JWTUtil {
try {
Date date = new Date(expireTime);
return JWT.create()
- .withClaim("userId", userId)
- .withClaim("userName", userName)
+ .withClaim(USER_ID, userId)
+ .withClaim(USER_NAME, userName)
.withExpiresAt(date)
.sign(algorithm);
} catch (Exception e) {
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
index 3384723ae..0f490f748 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/authentication/ShiroConfig.java
@@ -32,48 +32,52 @@ import java.util.LinkedHashMap;
@Configuration
public class ShiroConfig {
+ private static final String ANON = "anon";
+
+ private static final String JWT = "jwt";
+
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager
securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new
ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
LinkedHashMap<String, Filter> filters = new LinkedHashMap<>();
- filters.put("jwt", new JWTFilter());
+ filters.put(JWT, new JWTFilter());
shiroFilterFactoryBean.setFilters(filters);
LinkedHashMap<String, String> filterChainDefinitionMap = new
LinkedHashMap<>();
- filterChainDefinitionMap.put("/actuator/**", "anon");
-
- filterChainDefinitionMap.put("/doc.html", "anon");
- filterChainDefinitionMap.put("/swagger-ui.html", "anon");
- filterChainDefinitionMap.put("/swagger-ui/**", "anon");
- filterChainDefinitionMap.put("/swagger-resources/**", "anon");
- filterChainDefinitionMap.put("/v3/api-docs/**", "anon");
- filterChainDefinitionMap.put("/webjars/**", "anon");
-
- filterChainDefinitionMap.put("/passport/**", "anon");
- filterChainDefinitionMap.put("/systemName", "anon");
- filterChainDefinitionMap.put("/member/teams", "anon");
- filterChainDefinitionMap.put("/user/check/**", "anon");
- filterChainDefinitionMap.put("/user/initTeam", "anon");
- filterChainDefinitionMap.put("/websocket/**", "anon");
- filterChainDefinitionMap.put("/metrics/**", "anon");
-
- filterChainDefinitionMap.put("/index.html", "anon");
- filterChainDefinitionMap.put("/assets/**", "anon");
- filterChainDefinitionMap.put("/resource/**/**", "anon");
- filterChainDefinitionMap.put("/css/**", "anon");
- filterChainDefinitionMap.put("/fonts/**", "anon");
- filterChainDefinitionMap.put("/img/**", "anon");
- filterChainDefinitionMap.put("/js/**", "anon");
- filterChainDefinitionMap.put("/loading/**", "anon");
- filterChainDefinitionMap.put("/*.js", "anon");
- filterChainDefinitionMap.put("/*.png", "anon");
- filterChainDefinitionMap.put("/*.jpg", "anon");
- filterChainDefinitionMap.put("/*.less", "anon");
- filterChainDefinitionMap.put("/*.ico", "anon");
- filterChainDefinitionMap.put("/", "anon");
- filterChainDefinitionMap.put("/**", "jwt");
+ filterChainDefinitionMap.put("/actuator/**", ANON);
+
+ filterChainDefinitionMap.put("/doc.html", ANON);
+ filterChainDefinitionMap.put("/swagger-ui.html", ANON);
+ filterChainDefinitionMap.put("/swagger-ui/**", ANON);
+ filterChainDefinitionMap.put("/swagger-resources/**", ANON);
+ filterChainDefinitionMap.put("/v3/api-docs/**", ANON);
+ filterChainDefinitionMap.put("/webjars/**", ANON);
+
+ filterChainDefinitionMap.put("/passport/**", ANON);
+ filterChainDefinitionMap.put("/systemName", ANON);
+ filterChainDefinitionMap.put("/member/teams", ANON);
+ filterChainDefinitionMap.put("/user/check/**", ANON);
+ filterChainDefinitionMap.put("/user/initTeam", ANON);
+ filterChainDefinitionMap.put("/websocket/**", ANON);
+ filterChainDefinitionMap.put("/metrics/**", ANON);
+
+ filterChainDefinitionMap.put("/index.html", ANON);
+ filterChainDefinitionMap.put("/assets/**", ANON);
+ filterChainDefinitionMap.put("/resource/**/**", ANON);
+ filterChainDefinitionMap.put("/css/**", ANON);
+ filterChainDefinitionMap.put("/fonts/**", ANON);
+ filterChainDefinitionMap.put("/img/**", ANON);
+ filterChainDefinitionMap.put("/js/**", ANON);
+ filterChainDefinitionMap.put("/loading/**", ANON);
+ filterChainDefinitionMap.put("/*.js", ANON);
+ filterChainDefinitionMap.put("/*.png", ANON);
+ filterChainDefinitionMap.put("/*.jpg", ANON);
+ filterChainDefinitionMap.put("/*.less", ANON);
+ filterChainDefinitionMap.put("/*.ico", ANON);
+ filterChainDefinitionMap.put("/", ANON);
+ filterChainDefinitionMap.put("/**", JWT);
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/SysLog.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/SysLog.java
deleted file mode 100644
index cdf029eda..000000000
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/SysLog.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.streampark.console.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-@TableName("t_log")
-public class SysLog implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- @TableId(type = IdType.AUTO)
- private Long id;
-
- private String username;
-
- private String operation;
-
- private Long time;
-
- private String method;
-
- private String params;
-
- private String ip;
-
- private Date createTime;
-
- private transient String createTimeFrom;
- private transient String createTimeTo;
-
- private String location;
-}