diff --git a/pom.xml b/pom.xml
index 5ad2e195..a6772f8b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
com.bruce
- SAMS
+ SAMS_O
0.0.1-SNAPSHOT
SAMS
SAMS
@@ -39,73 +39,64 @@
spring-boot-starter-web
-
- com.baomidou
- mybatis-plus-spring-boot3-starter
- 3.5.10.1
-
-
- com.mysql
- mysql-connector-j
- runtime
-
-
- org.projectlombok
- lombok
- true
-
org.springframework.boot
spring-boot-starter-test
test
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter-test
- 3.0.4
- test
-
+
org.springframework.security
spring-security-test
test
-
+
- io.jsonwebtoken
- jjwt-api
- 0.11.5
+ org.springframework.boot
+ spring-boot-starter-logging
+ 3.4.2
+
+
- io.jsonwebtoken
- jjwt-impl
- 0.11.5
- runtime
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+ 3.5.10.1
+
+
- io.jsonwebtoken
- jjwt-jackson
- 0.11.5
+ com.mysql
+ mysql-connector-j
runtime
-
- ch.qos.logback
- logback-core
- 1.5.16
+ org.projectlombok
+ lombok
+ 1.18.36
+ true
+
+
- ch.qos.logback
- logback-classic
- 1.5.16
+ org.springframework.boot
+ spring-boot-starter-validation
-
+
+
- org.slf4j
- slf4j-api
- 2.0.16
+ io.jsonwebtoken
+ jjwt
+ 0.12.5
+
+
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ 2.0.53
@@ -120,6 +111,7 @@
org.projectlombok
lombok
+ 1.18.36
diff --git a/src/main/java/com/bruce/sams/Config/SecurityConfig.java b/src/main/java/com/bruce/sams/Config/SecurityConfig.java
deleted file mode 100644
index 21ad4e2a..00000000
--- a/src/main/java/com/bruce/sams/Config/SecurityConfig.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.bruce.sams.Config;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.bruce.sams.Entity.SysRole;
-import com.bruce.sams.Service.SysUserService;
-import com.bruce.sams.Entity.SysUser;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.web.SecurityFilterChain;
-
-/**
- * Spring Secrutiy 配置类 提供密码验证和鉴权
- */
-
-@Configuration
-public class SecurityConfig {
-
- private final SysUserService userService;
-
- public SecurityConfig(SysUserService userService) {
- this.userService = userService;
- }
-
- // 配置 AuthenticationManager,处理用户登录
- @Bean
- public AuthenticationManager authenticationManager(HttpSecurity http) throws Exception {
- AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class);
- authenticationManagerBuilder.userDetailsService(userDetailsService())
- .passwordEncoder(passwordEncoder());
- return authenticationManagerBuilder.build();
- }
-
- // 配置 UserDetailsService,用于从数据库加载用户信息
-
- @Bean
- public UserDetailsService userDetailsService() {
- return username -> {
- // 获取用户信息
- SysUser user = userService.getOne(Wrappers.lambdaQuery().eq(SysUser::getUserName, username));
-
- if (user == null) {
- throw new UsernameNotFoundException("用户不存在");
- }
-
- // 获取角色信息
- SysRole role = userService.getRoleByUserId(user.getUserId()); // 假设你提供了这个方法来查询角色
-
- if (role == null) {
- throw new UsernameNotFoundException("用户角色不存在");
- }
-
- // 将角色添加为 ROLE_ 前缀
- return org.springframework.security.core.userdetails.User
- .withUsername(user.getUserName())
- .password(user.getPasswd())
- .roles("ROLE_" + role.getRoleKey()) // 根据角色的 role_key 设置角色,确保加上 ROLE_ 前缀
- .build();
- };
- }
-
-
- // 配置密码加密方式
- @Bean
- public PasswordEncoder passwordEncoder() {
- return new BCryptPasswordEncoder();
- }
-
- // 配置 HttpSecurity,进行权限管理
- @Bean
- public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
- http
- .authorizeHttpRequests(authz -> authz
- .requestMatchers("/login", "/register").permitAll() // 登录和注册允许匿名访问
- .requestMatchers("/admin/**").hasRole("ADMIN") // 只有 ADMIN 角色才能访问 /admin 路径
- .requestMatchers("/user/**").hasRole("USER") // 只有 USER 角色才能访问 /user 路径
- .anyRequest().authenticated() // 其他请求需要认证
- )
- .formLogin(form -> form
- .loginPage("/login") // 登录页面
- .permitAll()
- )
- .logout(logout -> logout
- .permitAll()
- );
-
- return http.build();
- }
-}
diff --git a/src/main/java/com/bruce/sams/Controller/LoginController.java b/src/main/java/com/bruce/sams/Controller/LoginController.java
index a8e22478..3bac70b6 100644
--- a/src/main/java/com/bruce/sams/Controller/LoginController.java
+++ b/src/main/java/com/bruce/sams/Controller/LoginController.java
@@ -1,6 +1,6 @@
package com.bruce.sams.Controller;
-import com.bruce.sams.Service.SysLoginService;
+import com.bruce.sams.service.SysLoginService;
import com.bruce.sams.Utils.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -19,7 +19,7 @@ public class LoginController {
* @param password 密码
* @return AjaxResult 包含登录状态和token
*/
- @PostMapping
+ @PostMapping("/login")
public AjaxResult login(@RequestParam String schoolId, @RequestParam String password) {
try {
// 调用登录服务,生成Token
diff --git a/src/main/java/com/bruce/sams/Controller/UserController.java b/src/main/java/com/bruce/sams/Controller/UserController.java
index 803f5f1f..b795fd41 100644
--- a/src/main/java/com/bruce/sams/Controller/UserController.java
+++ b/src/main/java/com/bruce/sams/Controller/UserController.java
@@ -1,10 +1,15 @@
package com.bruce.sams.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
+ @GetMapping("/zhangsan")
+ public String show (){
+ return "这是张三";
+ }
}
diff --git a/src/main/java/com/bruce/sams/Utils/TokenUtil.java b/src/main/java/com/bruce/sams/Utils/TokenUtil.java
index 8b2f8f32..a2782194 100644
--- a/src/main/java/com/bruce/sams/Utils/TokenUtil.java
+++ b/src/main/java/com/bruce/sams/Utils/TokenUtil.java
@@ -1,87 +1,74 @@
package com.bruce.sams.Utils;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.*;
import io.jsonwebtoken.security.Keys;
-import org.springframework.stereotype.Component;
+import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Function;
public class TokenUtil {
- // 密钥,用于签名和验证Token
- private static final Key SECRET_KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256);
+ private static final Key SECRET_KEY = Keys.secretKeyFor(SignatureAlgorithm.HS256); // 需要一个256-bit的密钥
+ private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 10; // 10小时
- // Token过期时间(单位:毫秒)
- private static final long EXPIRATION_TIME = 3600000; // 1小时
- /**
- * 生成Token
- *
- * @param userId 用户ID
- * @return 生成的Token
- */
- public static String generateToken(String userId) {
+
+ // 生成Token
+ public static String generateToken(Long userId, Long roleId) {
Map claims = new HashMap<>();
- claims.put("userId", userId); // 将用户ID放入Token的负载部分
-
+ claims.put("roleId", roleId); // 存储权限ID
return Jwts.builder()
- .setClaims(claims) // 设置自定义信息
- .setIssuedAt(new Date(System.currentTimeMillis())) // 设置签发时间
- .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) // 设置过期时间
- .signWith(SECRET_KEY) // 使用密钥进行签名
- .compact(); // 生成Token
+ .setClaims(claims)
+ .setSubject(String.valueOf(userId)) // 用户ID
+ .setIssuedAt(new Date()) // 签发时间
+ .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) // 过期时间
+ .signWith(SECRET_KEY, SignatureAlgorithm.HS256) // 签名
+ .compact();
}
- /**
- * 验证Token是否有效
- *
- * @param token Token字符串
- * @return 是否有效
- */
+ // 验证Token
public static boolean validateToken(String token) {
try {
- Jwts.parserBuilder()
- .setSigningKey(SECRET_KEY) // 设置密钥
- .build()
- .parseClaimsJws(token); // 解析Token
- return true; // 如果没有异常,表示Token有效
- } catch (Exception e) {
- return false; // 如果解析失败,表示Token无效
+ Jwts.parser().setSigningKey(SECRET_KEY).build().parseClaimsJws(token);
+ return true;
+ } catch (JwtException | IllegalArgumentException e) {
+ return false;
}
}
- /**
- * 从Token中提取用户ID
- *
- * @param token Token字符串
- * @return 用户ID
- */
- public static String getUserIdFromToken(String token) {
- Claims claims = Jwts.parserBuilder()
- .setSigningKey(SECRET_KEY) // 设置密钥
- .build()
- .parseClaimsJws(token) // 解析Token
- .getBody();
- return claims.get("userId", String.class); // 提取用户ID
+ // 提取用户ID
+ public static Long extractUserId(String token) {
+ String userId = extractClaim(token, Claims::getSubject);
+ return userId != null ? Long.parseLong(userId) : null;
}
- /**
- * 获取Token的过期时间
- *
- * @param token Token字符串
- * @return 过期时间
- */
- public static Date getExpirationDateFromToken(String token) {
- Claims claims = Jwts.parserBuilder()
- .setSigningKey(SECRET_KEY) // 设置密钥
+ // 提取权限ID
+ public static Long extractRoleId(String token) {
+ Claims claims = extractAllClaims(token);
+ return claims.get("roleId", Long.class);
+ }
+
+ // 提取过期时间
+ public static Date extractExpiration(String token) {
+ return extractClaim(token, Claims::getExpiration);
+ }
+
+ // 提取单个Claim
+ private static T extractClaim(String token, Function claimsResolver) {
+ final Claims claims = extractAllClaims(token);
+ return claimsResolver.apply(claims);
+ }
+
+ // 解析所有Claims
+ private static Claims extractAllClaims(String token) {
+ return Jwts.parserBuilder()
+ .setSigningKey(getSigningKey())
.build()
- .parseClaimsJws(token) // 解析Token
+ .parseClaimsJws(token)
.getBody();
- return claims.getExpiration(); // 获取Token的过期时间
}
}
diff --git a/src/main/java/com/bruce/sams/Entity/SysRole.java b/src/main/java/com/bruce/sams/domain/SysRole.java
similarity index 97%
rename from src/main/java/com/bruce/sams/Entity/SysRole.java
rename to src/main/java/com/bruce/sams/domain/SysRole.java
index 52aefde9..88cba6ae 100644
--- a/src/main/java/com/bruce/sams/Entity/SysRole.java
+++ b/src/main/java/com/bruce/sams/domain/SysRole.java
@@ -1,7 +1,6 @@
-package com.bruce.sams.Entity;
+package com.bruce.sams.domain;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
diff --git a/src/main/java/com/bruce/sams/Entity/SysUser.java b/src/main/java/com/bruce/sams/domain/SysUser.java
similarity index 98%
rename from src/main/java/com/bruce/sams/Entity/SysUser.java
rename to src/main/java/com/bruce/sams/domain/SysUser.java
index fe721643..4eac785e 100644
--- a/src/main/java/com/bruce/sams/Entity/SysUser.java
+++ b/src/main/java/com/bruce/sams/domain/SysUser.java
@@ -1,7 +1,6 @@
-package com.bruce.sams.Entity;
+package com.bruce.sams.domain;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
diff --git a/src/main/java/com/bruce/sams/domain/entity/UserDetail.java b/src/main/java/com/bruce/sams/domain/entity/UserDetail.java
new file mode 100644
index 00000000..855bda52
--- /dev/null
+++ b/src/main/java/com/bruce/sams/domain/entity/UserDetail.java
@@ -0,0 +1,49 @@
+package com.bruce.sams.domain.entity;
+
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.Collection;
+import java.util.List;
+
+public class UserDetail implements UserDetails {
+
+ private Long userId;
+
+ private Long roleId;
+
+ @Override
+ public Collection extends GrantedAuthority> getAuthorities() {
+ return List.of();
+ }
+
+ @Override
+ public String getPassword() {
+ return "";
+ }
+
+ @Override
+ public String getUsername() {
+ return "";
+ }
+
+ @Override
+ public boolean isAccountNonExpired() {
+ return UserDetails.super.isAccountNonExpired();
+ }
+
+ @Override
+ public boolean isAccountNonLocked() {
+ return UserDetails.super.isAccountNonLocked();
+ }
+
+ @Override
+ public boolean isCredentialsNonExpired() {
+ return UserDetails.super.isCredentialsNonExpired();
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return UserDetails.super.isEnabled();
+ }
+}
diff --git a/src/main/java/com/bruce/sams/Exception/CustomException.java b/src/main/java/com/bruce/sams/exception/CustomException.java
similarity index 86%
rename from src/main/java/com/bruce/sams/Exception/CustomException.java
rename to src/main/java/com/bruce/sams/exception/CustomException.java
index d3a17c90..51edbb82 100644
--- a/src/main/java/com/bruce/sams/Exception/CustomException.java
+++ b/src/main/java/com/bruce/sams/exception/CustomException.java
@@ -1,4 +1,4 @@
-package com.bruce.sams.Exception;
+package com.bruce.sams.exception;
public class CustomException extends RuntimeException {
public CustomException(String message) {
diff --git a/src/main/java/com/bruce/sams/Exception/User/IncorrectPasswordException.java b/src/main/java/com/bruce/sams/exception/user/IncorrectPasswordException.java
similarity index 67%
rename from src/main/java/com/bruce/sams/Exception/User/IncorrectPasswordException.java
rename to src/main/java/com/bruce/sams/exception/user/IncorrectPasswordException.java
index e2fb59d1..48b4292a 100644
--- a/src/main/java/com/bruce/sams/Exception/User/IncorrectPasswordException.java
+++ b/src/main/java/com/bruce/sams/exception/user/IncorrectPasswordException.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Exception.User;
+package com.bruce.sams.exception.user;
-import com.bruce.sams.Exception.CustomException;
+import com.bruce.sams.exception.CustomException;
/**
* 密码错误异常
diff --git a/src/main/java/com/bruce/sams/Exception/User/InsufficientPermissionsException.java b/src/main/java/com/bruce/sams/exception/user/InsufficientPermissionsException.java
similarity index 68%
rename from src/main/java/com/bruce/sams/Exception/User/InsufficientPermissionsException.java
rename to src/main/java/com/bruce/sams/exception/user/InsufficientPermissionsException.java
index 3010ab37..a6c14aba 100644
--- a/src/main/java/com/bruce/sams/Exception/User/InsufficientPermissionsException.java
+++ b/src/main/java/com/bruce/sams/exception/user/InsufficientPermissionsException.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Exception.User;
+package com.bruce.sams.exception.user;
-import com.bruce.sams.Exception.CustomException;
+import com.bruce.sams.exception.CustomException;
/**
* 权限不足异常
diff --git a/src/main/java/com/bruce/sams/Exception/User/InvalidInputException.java b/src/main/java/com/bruce/sams/exception/user/InvalidInputException.java
similarity index 66%
rename from src/main/java/com/bruce/sams/Exception/User/InvalidInputException.java
rename to src/main/java/com/bruce/sams/exception/user/InvalidInputException.java
index 97f6ba05..44af8fc3 100644
--- a/src/main/java/com/bruce/sams/Exception/User/InvalidInputException.java
+++ b/src/main/java/com/bruce/sams/exception/user/InvalidInputException.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Exception.User;
+package com.bruce.sams.exception.user;
-import com.bruce.sams.Exception.CustomException;
+import com.bruce.sams.exception.CustomException;
/**
* 无效输入异常
diff --git a/src/main/java/com/bruce/sams/Exception/User/UserNotFoundException.java b/src/main/java/com/bruce/sams/exception/user/UserNotFoundException.java
similarity index 65%
rename from src/main/java/com/bruce/sams/Exception/User/UserNotFoundException.java
rename to src/main/java/com/bruce/sams/exception/user/UserNotFoundException.java
index 960acd79..cf641e8e 100644
--- a/src/main/java/com/bruce/sams/Exception/User/UserNotFoundException.java
+++ b/src/main/java/com/bruce/sams/exception/user/UserNotFoundException.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Exception.User;
+package com.bruce.sams.exception.user;
-import com.bruce.sams.Exception.CustomException;
+import com.bruce.sams.exception.CustomException;
/**
* 用户不存在
diff --git a/src/main/java/com/bruce/sams/Mapper/SysRoleMapper.java b/src/main/java/com/bruce/sams/mapper/SysRoleMapper.java
similarity index 83%
rename from src/main/java/com/bruce/sams/Mapper/SysRoleMapper.java
rename to src/main/java/com/bruce/sams/mapper/SysRoleMapper.java
index b00a53da..9fd1f4a6 100644
--- a/src/main/java/com/bruce/sams/Mapper/SysRoleMapper.java
+++ b/src/main/java/com/bruce/sams/mapper/SysRoleMapper.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Mapper;
+package com.bruce.sams.mapper;
-import com.bruce.sams.Entity.SysRole;
+import com.bruce.sams.domain.SysRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
diff --git a/src/main/java/com/bruce/sams/Mapper/SysUserMapper.java b/src/main/java/com/bruce/sams/mapper/SysUserMapper.java
similarity index 83%
rename from src/main/java/com/bruce/sams/Mapper/SysUserMapper.java
rename to src/main/java/com/bruce/sams/mapper/SysUserMapper.java
index dd383605..41cdcffb 100644
--- a/src/main/java/com/bruce/sams/Mapper/SysUserMapper.java
+++ b/src/main/java/com/bruce/sams/mapper/SysUserMapper.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Mapper;
+package com.bruce.sams.mapper;
-import com.bruce.sams.Entity.SysUser;
+import com.bruce.sams.domain.SysUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
diff --git a/src/main/java/com/bruce/sams/Service/SysLoginService.java b/src/main/java/com/bruce/sams/service/SysLoginService.java
similarity index 86%
rename from src/main/java/com/bruce/sams/Service/SysLoginService.java
rename to src/main/java/com/bruce/sams/service/SysLoginService.java
index 3cacb41f..4bd2462d 100644
--- a/src/main/java/com/bruce/sams/Service/SysLoginService.java
+++ b/src/main/java/com/bruce/sams/service/SysLoginService.java
@@ -1,4 +1,4 @@
-package com.bruce.sams.Service;
+package com.bruce.sams.service;
public interface SysLoginService {
/**
diff --git a/src/main/java/com/bruce/sams/Service/SysRoleService.java b/src/main/java/com/bruce/sams/service/SysRoleService.java
similarity index 78%
rename from src/main/java/com/bruce/sams/Service/SysRoleService.java
rename to src/main/java/com/bruce/sams/service/SysRoleService.java
index 41c32ddb..141ed943 100644
--- a/src/main/java/com/bruce/sams/Service/SysRoleService.java
+++ b/src/main/java/com/bruce/sams/service/SysRoleService.java
@@ -1,6 +1,6 @@
-package com.bruce.sams.Service;
+package com.bruce.sams.service;
-import com.bruce.sams.Entity.SysRole;
+import com.bruce.sams.domain.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
diff --git a/src/main/java/com/bruce/sams/Service/SysUserService.java b/src/main/java/com/bruce/sams/service/SysUserService.java
similarity index 85%
rename from src/main/java/com/bruce/sams/Service/SysUserService.java
rename to src/main/java/com/bruce/sams/service/SysUserService.java
index 3830f039..5dd6add2 100644
--- a/src/main/java/com/bruce/sams/Service/SysUserService.java
+++ b/src/main/java/com/bruce/sams/service/SysUserService.java
@@ -1,7 +1,7 @@
-package com.bruce.sams.Service;
+package com.bruce.sams.service;
-import com.bruce.sams.Entity.SysRole;
-import com.bruce.sams.Entity.SysUser;
+import com.bruce.sams.domain.SysRole;
+import com.bruce.sams.domain.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
diff --git a/src/main/java/com/bruce/sams/Service/impl/SysLoginServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/SysLoginServiceImpl.java
similarity index 55%
rename from src/main/java/com/bruce/sams/Service/impl/SysLoginServiceImpl.java
rename to src/main/java/com/bruce/sams/service/impl/SysLoginServiceImpl.java
index f63761c8..4b31dac8 100644
--- a/src/main/java/com/bruce/sams/Service/impl/SysLoginServiceImpl.java
+++ b/src/main/java/com/bruce/sams/service/impl/SysLoginServiceImpl.java
@@ -1,20 +1,23 @@
-package com.bruce.sams.Service.impl;
+package com.bruce.sams.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.bruce.sams.Entity.SysUser;
-import com.bruce.sams.Exception.User.IncorrectPasswordException;
-import com.bruce.sams.Exception.User.UserNotFoundException;
+import com.bruce.sams.domain.SysUser;
+import com.bruce.sams.exception.user.IncorrectPasswordException;
+import com.bruce.sams.exception.user.UserNotFoundException;
import com.bruce.sams.Utils.PasswordEncoder;
import com.bruce.sams.Utils.TokenUtil;
-import com.bruce.sams.Mapper.SysUserMapper;
-import com.bruce.sams.Service.SysLoginService;
+import com.bruce.sams.mapper.SysUserMapper;
+import com.bruce.sams.service.SysLoginService;
import jakarta.annotation.Resource;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
@Service
public class SysLoginServiceImpl extends ServiceImpl
- implements SysLoginService {
+ implements SysLoginService, UserDetailsService {
@Resource
private PasswordEncoder passwordEncoder;
@@ -46,4 +49,20 @@ public class SysLoginServiceImpl extends ServiceImpl
return TokenUtil.generateToken(user.getUserId().toString());
}
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ // 查找用户
+ SysUser user = this.getOne(Wrappers.lambdaQuery().eq(SysUser::getUserName, username));
+
+ //如果用户不存在,抛出用户未找到异常
+ if (user == null) {
+ throw new UsernameNotFoundException("用户不存在");
+ }
+
+
+ // 登录成功,生成Token
+
+ // todo 返回UserDetail
+ return null;
+ }
}
diff --git a/src/main/java/com/bruce/sams/Service/impl/SysRoleServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/SysRoleServiceImpl.java
similarity index 69%
rename from src/main/java/com/bruce/sams/Service/impl/SysRoleServiceImpl.java
rename to src/main/java/com/bruce/sams/service/impl/SysRoleServiceImpl.java
index 312eb274..a735d343 100644
--- a/src/main/java/com/bruce/sams/Service/impl/SysRoleServiceImpl.java
+++ b/src/main/java/com/bruce/sams/service/impl/SysRoleServiceImpl.java
@@ -1,9 +1,9 @@
-package com.bruce.sams.Service.impl;
+package com.bruce.sams.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.bruce.sams.Entity.SysRole;
-import com.bruce.sams.Service.SysRoleService;
-import com.bruce.sams.Mapper.SysRoleMapper;
+import com.bruce.sams.domain.SysRole;
+import com.bruce.sams.service.SysRoleService;
+import com.bruce.sams.mapper.SysRoleMapper;
import org.springframework.stereotype.Service;
/**
diff --git a/src/main/java/com/bruce/sams/Service/impl/SysUserServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/SysUserServiceImpl.java
similarity index 91%
rename from src/main/java/com/bruce/sams/Service/impl/SysUserServiceImpl.java
rename to src/main/java/com/bruce/sams/service/impl/SysUserServiceImpl.java
index 1f2e8781..37229a82 100644
--- a/src/main/java/com/bruce/sams/Service/impl/SysUserServiceImpl.java
+++ b/src/main/java/com/bruce/sams/service/impl/SysUserServiceImpl.java
@@ -1,12 +1,12 @@
-package com.bruce.sams.Service.impl;
+package com.bruce.sams.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.bruce.sams.Entity.SysRole;
-import com.bruce.sams.Entity.SysUser;
-import com.bruce.sams.Mapper.SysRoleMapper;
+import com.bruce.sams.domain.SysRole;
+import com.bruce.sams.domain.SysUser;
+import com.bruce.sams.mapper.SysRoleMapper;
import com.bruce.sams.Utils.PasswordEncoder;
-import com.bruce.sams.Service.SysUserService;
-import com.bruce.sams.Mapper.SysUserMapper;
+import com.bruce.sams.service.SysUserService;
+import com.bruce.sams.mapper.SysUserMapper;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index cbd9b118..4dad704a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,10 +1,26 @@
+server:
+ port:
+
spring:
application:
name: SAMS
-
datasource:
- url: jdbc:mysql://localhost:3306/SAMS
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/SAMS_O
username: root
password: admin123
- driver-class-name: com.mysql.cj.jdbc.Driver
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
+
+mybatis-plus:
+ configuration:
+ # MyBatis 配置
+ map-underscore-to-camel-case: true
+ global-config:
+ # 全局配置
+ db-config:
+ # 数据库配置
+ id-type: auto
+ mapper-locations: /mapper/*Mapper.xml
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 03256661..ed90cc79 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -1,44 +1,93 @@
-
-
-
- System.out
+
+
+
+
+
+
+
-
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n
+ ${log.pattern}
-
-
-
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
- utf-8
-
-
- /log/itheima-data.log
-
-
-
- /log/itheima-data2-%d{yyyy-MMdd}.log%i.gz
-
- 1MB
+
+
+ ${log.path}/sys-info.log
+
+
+
+ ${log.path}/sys-info.%d{yyyy-MM-dd}.log
+
+ 60
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
-
+
+
+ ${log.path}/sys-error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
- , 默认debug
- 可以包含零个或多个元素,标识这个输出位置将会被本日志级别控制。
- -->
-
-
-
+
+
+ ${log.path}/sys-user.log
+
+
+ ${log.path}/sys-user.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/com/bruce/sams/Mapper/SysRoleMapper.xml b/src/main/resources/mapper/SysRoleMapper.xml
similarity index 91%
rename from src/main/resources/com/bruce/sams/Mapper/SysRoleMapper.xml
rename to src/main/resources/mapper/SysRoleMapper.xml
index 1d712927..da427987 100644
--- a/src/main/resources/com/bruce/sams/Mapper/SysRoleMapper.xml
+++ b/src/main/resources/mapper/SysRoleMapper.xml
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+
diff --git a/src/main/resources/com/bruce/sams/Mapper/SysUserMapper.xml b/src/main/resources/mapper/SysUserMapper.xml
similarity index 94%
rename from src/main/resources/com/bruce/sams/Mapper/SysUserMapper.xml
rename to src/main/resources/mapper/SysUserMapper.xml
index 5ae0c236..3aecca8e 100644
--- a/src/main/resources/com/bruce/sams/Mapper/SysUserMapper.xml
+++ b/src/main/resources/mapper/SysUserMapper.xml
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+