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;
-}

Reply via email to