From fae01fdf43dc28e2474402c730c9f76ecd8e14f6 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Mon, 6 Apr 2026 23:02:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=A2=9E=E5=8A=A0=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/filesystem/entity/User.java | 2 ++ .../security/JwtAuthenticationFilter.java | 14 +++++++++++++- .../com/filesystem/security/UserPrincipal.java | 1 + src/main/resources/db/init.sql | 7 +++---- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/filesystem/entity/User.java b/src/main/java/com/filesystem/entity/User.java index aa3cfef..06ba038 100644 --- a/src/main/java/com/filesystem/entity/User.java +++ b/src/main/java/com/filesystem/entity/User.java @@ -25,6 +25,8 @@ public class User extends BaseEntity { private Integer status; + private String role; // admin-管理员, user-普通用户 + @TableField("storage_used") private Long storageUsed; diff --git a/src/main/java/com/filesystem/security/JwtAuthenticationFilter.java b/src/main/java/com/filesystem/security/JwtAuthenticationFilter.java index c1df7a3..c1cfb6d 100644 --- a/src/main/java/com/filesystem/security/JwtAuthenticationFilter.java +++ b/src/main/java/com/filesystem/security/JwtAuthenticationFilter.java @@ -1,5 +1,7 @@ package com.filesystem.security; +import com.filesystem.entity.User; +import com.filesystem.mapper.UserMapper; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; @@ -24,6 +26,9 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { @Resource private JwtUtil jwtUtil; + + @Resource + private UserMapper userMapper; private static final List EXCLUDE_MATCHERS = List.of( new AntPathRequestMatcher("/api/auth/login"), @@ -71,7 +76,14 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { String username = jwtUtil.getUsernameFromToken(token); Long userId = jwtUtil.getUserIdFromToken(token); - UserPrincipal principal = new UserPrincipal(userId, username); + // 查询用户角色 + String role = "user"; + User user = userMapper.selectById(userId); + if (user != null && "admin".equals(user.getRole())) { + role = "admin"; + } + + UserPrincipal principal = new UserPrincipal(userId, username, role); UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(principal, null, new ArrayList<>()); diff --git a/src/main/java/com/filesystem/security/UserPrincipal.java b/src/main/java/com/filesystem/security/UserPrincipal.java index 69ea98c..44093cb 100644 --- a/src/main/java/com/filesystem/security/UserPrincipal.java +++ b/src/main/java/com/filesystem/security/UserPrincipal.java @@ -8,4 +8,5 @@ import lombok.Data; public class UserPrincipal { private Long userId; private String username; + private String role; // admin-管理员, user-普通用户 } diff --git a/src/main/resources/db/init.sql b/src/main/resources/db/init.sql index 89bcfe6..e644ef7 100644 --- a/src/main/resources/db/init.sql +++ b/src/main/resources/db/init.sql @@ -14,8 +14,7 @@ CREATE TABLE IF NOT EXISTS sys_user ( email VARCHAR(100) COMMENT '邮箱', phone VARCHAR(20) COMMENT '手机号', status INT DEFAULT 1 COMMENT '状态 0-禁用 1-启用', - storage_used BIGINT DEFAULT 0 COMMENT '已用存储空间(字节)', - storage_limit BIGINT DEFAULT 10737418240 COMMENT '存储限制(字节) 默认10GB', + role VARCHAR(20) DEFAULT 'user' COMMENT '角色 admin-管理员 user-普通用户', register_ip VARCHAR(50) COMMENT '注册IP', allowed_ips VARCHAR(500) COMMENT '允许的IP段,逗号分隔', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -75,6 +74,6 @@ CREATE TABLE IF NOT EXISTS sys_message ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息表'; -- 插入默认管理员账户 (密码: admin123) -INSERT INTO sys_user (username, password, nickname, status, storage_limit, allowed_ips) -VALUES ('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '管理员', 1, 10737418240, '0.0.0.0/0') +INSERT INTO sys_user (username, password, nickname, status, storage_limit, role, allowed_ips) +VALUES ('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '管理员', 1, 10737418240, 'admin', '0.0.0.0/0') ON DUPLICATE KEY UPDATE username = username;