Compare commits

...

8 Commits
master ... dev

54 changed files with 1784 additions and 209 deletions

View File

@ -7,6 +7,7 @@
<sourceOutputDir name="target/generated-sources/annotations" /> <sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" /> <outputRelativeToContentRoot value="true" />
<module name="spring-security" />
<module name="model" /> <module name="model" />
<module name="common-util" /> <module name="common-util" />
<module name="service-oa" /> <module name="service-oa" />
@ -22,6 +23,7 @@
<module name="model" options="-parameters" /> <module name="model" options="-parameters" />
<module name="service-oa" options="-parameters" /> <module name="service-oa" options="-parameters" />
<module name="service-util" options="-parameters" /> <module name="service-util" options="-parameters" />
<module name="spring-security" options="-parameters" />
</option> </option>
</component> </component>
</project> </project>

View File

@ -7,6 +7,7 @@
<file url="file://$PROJECT_DIR$/common/service-util/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/service-util/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/service-util/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/service-util/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/service-util/src/main/resources-filtered" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/service-util/src/main/resources-filtered" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/spring-security/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/src/main/resources-filtered" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/src/main/resources-filtered" charset="UTF-8" />

View File

@ -19,12 +19,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>com.atguigu</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>jjwt</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
@ -34,5 +35,10 @@
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
</dependency> </dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.1</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -14,7 +14,7 @@ public enum ResultCodeEnum {
DATA_ERROR(204, "数据异常"), DATA_ERROR(204, "数据异常"),
LOGIN_AUTH(208, "未登陆"), LOGIN_AUTH(208, "未登陆"),
PERMISSION(209, "没有权限"); PERMISSION(209, "没有权限"), LOGIN_MOBLE_ERROR(204, "登录错误");
private final Integer code; private final Integer code;
private final String message; private final String message;

View File

@ -0,0 +1,30 @@
package com.atguigu.common.utlis;
public class BaseContext {
private static final ThreadLocal<Long> userId = new ThreadLocal<Long>();
private static final ThreadLocal<String> username = new ThreadLocal<String>();
public static Long getUserId() {
return userId.get();
}
public static void setUserId(Long _userId) {
userId.set(_userId);
}
public static void removeUserId() {
userId.remove();
}
public static String getUsername() {
return username.get();
}
public static void setUsername(String _username) {
username.set(_username);
}
public static void removeUsername() {
username.remove();
}
}

View File

@ -0,0 +1,51 @@
package com.atguigu.common.utlis;
import io.jsonwebtoken.*;
import org.springframework.util.StringUtils;
import java.util.Date;
public class JwtHelper {
private static final long tokenExpiration = 365L * 24 * 60 * 60 * 1000;
private static final String tokenSignKey = "guigu-OA";
public static String createToken(Long userId, String userName) {
return Jwts.builder()
.setSubject("OA-USER")
.setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
.claim("userId", userId)
.claim("userName", userName)
.signWith(SignatureAlgorithm.HS256, tokenSignKey)
.compressWith(CompressionCodecs.GZIP)
.compact();
}
public static Long getUserId(String token) {
if (StringUtils.isEmpty(token)) return null;
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
Integer userId = (Integer) claims.get("userId");
return userId.longValue();
// return 1L;
}
public static String getUserName(String token) {
if (StringUtils.isEmpty(token)) return "";
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
return (String) claims.get("userName");
}
public static void removeToken(String token) {
// jwttoken无需删除客户端扔掉即可
}
public static void main(String[] args) {
String token = JwtHelper.createToken(7L, "admin");
System.out.println(token);
System.out.println(JwtHelper.getUserId(token));
System.out.println(JwtHelper.getUserName(token));
}
}

View File

@ -0,0 +1,103 @@
package com.atguigu.common.utlis;
import com.atguigu.model.system.SysMenu;
import com.atguigu.vo.system.MetaVo;
import com.atguigu.vo.system.RouterVo;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
public class MenuHelper {
/**
* 构建树型结构
*
* @param sysMenuList 系统菜单列表
* @return 菜单结构列表
*/
public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {
ArrayList<SysMenu> tress = new ArrayList<>();
// 把菜单数据进行遍历
sysMenuList.forEach(sysMenu -> {
if (sysMenu.getParentId() == 0) tress.add(getChildren(sysMenu, sysMenuList));
});
return tress;
}
/**
* 构建递归循环
*
* @param sysMenu 当前菜单对象
* @param sysMenuList 全部菜单列表
* @return 菜单
*/
private static SysMenu getChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {
// 遍历所有菜单数据判断id和parentID对应关系
sysMenu.setChildren(new ArrayList<>());
sysMenuList.forEach(menu -> {
if (menu.getChildren() == null) menu.setChildren(new ArrayList<>());
if (sysMenu.getId().equals(menu.getParentId())) {
sysMenu.getChildren().add(getChildren(menu, sysMenuList));
}
});
return sysMenu;
}
/**
* 封装路由菜单
*
* @param menuTreeList 菜单树型结构
* @return 路由菜单列表
*/
public static List<RouterVo> buildRouter(List<SysMenu> menuTreeList) {
List<RouterVo> routers = new LinkedList<>();
menuTreeList.forEach(menu -> {
RouterVo router = new RouterVo();
router.setHidden(false);
router.setAlwaysShow(false);
router.setPath(getRouterPath(menu));
router.setComponent(menu.getComponent());
router.setMeta(new MetaVo(menu.getName(), menu.getIcon()));
List<SysMenu> children = menu.getChildren();
// 如果当前是菜单需将按钮对应的路由加载出来角色授权按钮对应的路由在系统管理下面
if (menu.getType() == 1) {
List<SysMenu> hiddenMenuList = children.stream().filter(item -> !StringUtils.isEmpty(item.getComponent())).collect(Collectors.toList());
for (SysMenu hiddenMenu : hiddenMenuList) {
RouterVo hiddenRouter = new RouterVo();
hiddenRouter.setHidden(true);
hiddenRouter.setAlwaysShow(false);
hiddenRouter.setPath(getRouterPath(hiddenMenu));
hiddenRouter.setComponent(hiddenMenu.getComponent());
hiddenRouter.setMeta(new MetaVo(hiddenMenu.getName(), hiddenMenu.getIcon()));
routers.add(hiddenRouter);
}
} else {
if (!CollectionUtils.isEmpty(children)) {
router.setAlwaysShow(true);
router.setChildren(buildRouter(children));
}
}
routers.add(router);
});
return routers;
}
/**
* 获取路由地址
*
* @param menu 菜单信息
* @return 路由地址
*/
private static String getRouterPath(SysMenu menu) {
String routerPath = "/" + menu.getPath();
if (menu.getParentId().intValue() != 0) {
routerPath = menu.getPath();
}
return routerPath;
}
}

View File

@ -0,0 +1,23 @@
package com.atguigu.common.utlis;
import com.atguigu.common.result.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ResponseUtil {
public static void out(HttpServletResponse response, Result r) {
ObjectMapper mapper = new ObjectMapper();
response.setStatus(HttpStatus.OK.value());
response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
try {
mapper.writeValue(response.getWriter(), r);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -1,4 +1,4 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
@ -21,6 +21,9 @@
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -46,5 +46,22 @@
<artifactId>velocity-engine-core</artifactId> <artifactId>velocity-engine-core</artifactId>
<version>2.0</version> <version>2.0</version>
</dependency> </dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redisson 分布式锁-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.2</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>3.2.4</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -55,7 +55,7 @@ public class CodeGet {
private static StrategyConfig getStrategyConfig() { private static StrategyConfig getStrategyConfig() {
StrategyConfig strategy = new StrategyConfig(); StrategyConfig strategy = new StrategyConfig();
// TODO 要生成的表 // TODO 要生成的表
strategy.setInclude("sys_user", "sys_role","sys_user_role"); strategy.setInclude("sys_menu", "sys_role_menu");
strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

View File

@ -0,0 +1,99 @@
package com.atguigu.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Configuration
@Slf4j
public class RedisConfiguration {
/**
* 使用StringRedisSerializer序列化为字符串
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {
log.info("RedisConfiguration===>使用StringRedisSerializer序列化为字符串");
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
// 设置key序列化为string
redisTemplate.setKeySerializer(new StringRedisSerializer());
// 设置value序列化为JSON使用GenericJackson2JsonRedisSerializer替换默认序列化
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
/**
* 解决cache(@Cacheable)把数据缓存到redis中的value是乱码问题
*/
@Bean
@SuppressWarnings("all")
public CacheManager cacheManager(RedisConnectionFactory factory) {
log.info("RedisConfiguration===>解决cache(@Cacheable)把数据缓存到redis中的value是乱码问题");
// 配置序列化
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jsonRedisSerializer()))
.entryTtl(Duration.ofDays(365));
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
.cacheDefaults(config).build();
return cacheManager;
}
/**
* 指定的日期模式
*/
public Jackson2JsonRedisSerializer<Object> jsonRedisSerializer() {
log.info("RedisConfiguration===>指定的日期模式");
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper mapper = new ObjectMapper();
// 设置ObjectMapper访问权限
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 记录序列化之后的数据类型方便反序列化
mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
// LocalDatetime序列化默认不兼容jdk8日期序列化
JavaTimeModule timeModule = new JavaTimeModule();
timeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
timeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
// 关闭默认的日期格式化方式默认UTC日期格式 yyyy-MM-ddTHH:mm:ss.SSS
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.registerModule(timeModule);
serializer.setObjectMapper(mapper);
return serializer;
}
}

View File

@ -32,7 +32,5 @@ public class MessageConstant {
public static final String LOGIN_DTO_IS_EMPTY = "登录参数不能为空"; public static final String LOGIN_DTO_IS_EMPTY = "登录参数不能为空";
public static final String TOKEN_IS_EMPTY = "token为空"; public static final String TOKEN_IS_EMPTY = "token为空";
public static final String DATA_IS_EMPTY = "数据为空"; public static final String DATA_IS_EMPTY = "数据为空";
public static final String STOCK_LESS = "库存不足"; public static final String DELETE_MENU_ERROR_HAS_MENUS = "有下级菜单";
public static final String SKU_NUM_CANNOT_BE_LESS = "商品数量不能再少了";
public static final String CART_IS_EMPTY = "购物车为空";
} }

View File

@ -0,0 +1,52 @@
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.atguigu</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>spring-security</artifactId>
<packaging>jar</packaging>
<name>spring-security</name>
<url>https://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>common-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- Spring Security依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redisson 分布式锁-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.2</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>3.2.4</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,75 @@
package com.atguigu.security.config;
import com.atguigu.security.custom.CustomMd5PasswordEncoder;
import com.atguigu.security.filter.TokenAuthenticationFilter;
import com.atguigu.security.filter.TokenLoginFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
@EnableWebSecurity //@EnableWebSecurity是开启SpringSecurity的默认行为
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private CustomMd5PasswordEncoder customMd5PasswordEncoder;
@Bean
@Override
protected AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// 这是配置的关键决定哪些接口开启防护哪些接口绕过防护
http.csrf().disable() // 关闭csrf跨站请求伪造
.cors().and()// 开启跨域以便前端调用接口
.authorizeRequests()
// 指定某些接口不需要通过验证即可访问登陆接口肯定是不需要认证的
.antMatchers("/admin/system/index/login").permitAll()
// 这里意思是其它所有接口需要认证才能访问
.anyRequest().authenticated()
.and()
// TokenAuthenticationFilter放到UsernamePasswordAuthenticationFilter的前面
// 这样做就是为了除了登录的时候去查询数据库外其他时候都用token进行认证
.addFilterBefore(new TokenAuthenticationFilter(redisTemplate), UsernamePasswordAuthenticationFilter.class)
.addFilter(new TokenLoginFilter(authenticationManager(), redisTemplate));
// 禁用session
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// 指定UserDetailService和加密器
auth.userDetailsService(userDetailsService).passwordEncoder(customMd5PasswordEncoder);
}
/**
* 配置哪些请求不拦截
* 排除swagger相关请求
*/
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/admin/modeler/**", "/diagram-viewer/**", "/editor-app/**", "/*.html",
"/admin/processImage/**",
"/admin/wechat/authorize", "/admin/wechat/userInfo", "/admin/wechat/bindPhone",
"/favicon.ico", "/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**", "/doc.html");
}
}

View File

@ -0,0 +1,16 @@
package com.atguigu.security.custom;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
@Component
public class CustomMd5PasswordEncoder implements PasswordEncoder {
public String encode(CharSequence rawPassword) {
return DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes());
}
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return encodedPassword.equals(DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes()));
}
}

View File

@ -0,0 +1,23 @@
package com.atguigu.security.custom;
import com.atguigu.model.system.SysUser;
import lombok.Getter;
import lombok.Setter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;
import java.util.Collection;
@Setter
@Getter
public class CustomUser extends User {
/**
* 我们自己的用户实体对象要调取用户信息时直接获取这个实体对象这里我就不写get/set方法了
*/
private SysUser sysUser;
public CustomUser(SysUser sysUser, Collection<? extends GrantedAuthority> authorities) {
super(sysUser.getUsername(), sysUser.getPassword(), authorities);
this.sysUser = sysUser;
}
}

View File

@ -0,0 +1,81 @@
package com.atguigu.security.filter;
import com.alibaba.fastjson.JSON;
import com.atguigu.common.result.Result;
import com.atguigu.common.result.ResultCodeEnum;
import com.atguigu.common.utlis.BaseContext;
import com.atguigu.common.utlis.JwtHelper;
import com.atguigu.common.utlis.ResponseUtil;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class TokenAuthenticationFilter extends OncePerRequestFilter {
private final RedisTemplate<String, Object> redisTemplate;
public TokenAuthenticationFilter(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain chain) throws ServletException, IOException {
// 如果是登录接口直接放行
if ("/admin/system/index/login".equals(request.getRequestURI())) {
chain.doFilter(request, response);
return;
}
UsernamePasswordAuthenticationToken authentication = getAuthentication(request);
if (null != authentication) {
SecurityContextHolder.getContext().setAuthentication(authentication);
chain.doFilter(request, response);
} else {
ResponseUtil.out(response, Result.build(null, ResultCodeEnum.LOGIN_MOBLE_ERROR));
}
}
private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request) {
// 请求头是否有token
String token = request.getHeader("token");
if (!StringUtils.isEmpty(token)) {
String username = JwtHelper.getUserName(token);
if (!StringUtils.isEmpty(username)) {
// 当前用户信息放到ThreadLocal里面
BaseContext.setUserId(JwtHelper.getUserId(token));
BaseContext.setUsername(username);
// 通过username从redis获取权限数据
String authString = (String) redisTemplate.opsForValue().get(username);
// 把redis获取字符串权限数据转换要求集合类型 List<SimpleGrantedAuthority>
if (!StringUtils.isEmpty(authString)) {
List<Map> maplist = JSON.parseArray(authString, Map.class);
System.out.println(maplist);
List<SimpleGrantedAuthority> authList = new ArrayList<>();
for (Map map : maplist) {
String authority = (String) map.get("authority");
authList.add(new SimpleGrantedAuthority(authority));
}
return new UsernamePasswordAuthenticationToken(username, null, authList);
} else {
return new UsernamePasswordAuthenticationToken(username, null, new ArrayList<>());
}
}
}
return null;
}
}

View File

@ -0,0 +1,84 @@
package com.atguigu.security.filter;
import com.alibaba.fastjson.JSON;
import com.atguigu.common.result.Result;
import com.atguigu.common.result.ResultCodeEnum;
import com.atguigu.common.utlis.JwtHelper;
import com.atguigu.common.utlis.ResponseUtil;
import com.atguigu.security.custom.CustomUser;
import com.atguigu.vo.system.LoginVo;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import javax.servlet.FilterChain;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class TokenLoginFilter extends UsernamePasswordAuthenticationFilter {
private final RedisTemplate<String, Object> redisTemplate;
// 构造方法
public TokenLoginFilter(AuthenticationManager authenticationManager,
RedisTemplate<String, Object> redisTemplate) {
this.setAuthenticationManager(authenticationManager);
this.setPostOnly(false);
// 指定登录接口及提交方式可以指定任意路径
this.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher("/admin/system/index/login", "POST"));
this.redisTemplate = redisTemplate;
}
// 登录认证
// 获取输入的用户名和密码调用方法认证
public Authentication attemptAuthentication(HttpServletRequest request,
HttpServletResponse response)
throws AuthenticationException {
try {
// 获取用户信息
LoginVo loginVo = new ObjectMapper().readValue(request.getInputStream(), LoginVo.class);
// 封装对象
Authentication authenticationToken =
new UsernamePasswordAuthenticationToken(loginVo.getUsername(), loginVo.getPassword());
// 调用方法
return this.getAuthenticationManager().authenticate(authenticationToken);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
// 认证成功调用方法
protected void successfulAuthentication(HttpServletRequest request,
HttpServletResponse response,
FilterChain chain,
Authentication auth) {
// 获取当前用户
CustomUser customUser = (CustomUser) auth.getPrincipal();
// 生成token
String token = JwtHelper.createToken(customUser.getSysUser().getId(),
customUser.getSysUser().getUsername());
// 获取当前用户权限数据放到Redis里面 keyusername value权限数据
redisTemplate.opsForValue().set(customUser.getUsername(),
JSON.toJSONString(customUser.getAuthorities()));
// 返回
Map<String, Object> map = new HashMap<>();
map.put("token", token);
ResponseUtil.out(response, Result.success(map));
}
// 认证失败调用方法
protected void unsuccessfulAuthentication(HttpServletRequest request,
HttpServletResponse response,
AuthenticationException failed) {
ResponseUtil.out(response, Result.error(null, ResultCodeEnum.LOGIN_MOBLE_ERROR));
}
}

View File

@ -0,0 +1,15 @@
package com.atguigu.security.service;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
@Component
public interface UserDetailsService extends org.springframework.security.core.userdetails.UserDetailsService {
/**
* 根据用户名获取用户对象获取不到直接抛异常
*/
@Override
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

View File

@ -1,104 +1,442 @@
18:26:31:597 INFO 21276 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 21276 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 10:57:28:573 INFO 23128 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 23128 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
18:26:31:598 INFO 21276 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 10:57:28:578 INFO 23128 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
18:26:32:027 WARN 21276 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 10:57:29:447 INFO 23128 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
18:26:32:195 INFO 21276 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 10:57:29:456 INFO 23128 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
18:26:32:200 INFO 21276 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 10:57:29:456 INFO 23128 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
18:26:32:200 INFO 21276 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 10:57:29:522 INFO 23128 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
18:26:32:239 INFO 21276 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 10:57:29:523 INFO 23128 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 910 ms
18:26:32:239 INFO 21276 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 622 ms 10:57:29:636 INFO 23128 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
18:26:32:437 INFO 21276 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 10:57:34:099 INFO 23128 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
18:26:32:836 INFO 21276 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 10:58:06:882 INFO 10532 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 10532 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
18:26:32:892 INFO 21276 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.512 seconds (JVM running for 1.974) 10:58:06:884 INFO 10532 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
18:27:41:337 INFO 21276 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 10:58:07:732 INFO 10532 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
18:27:45:678 INFO 20440 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 20440 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 10:58:07:739 INFO 10532 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
18:27:45:680 INFO 20440 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 10:58:07:739 INFO 10532 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
18:27:46:090 WARN 20440 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 10:58:07:803 INFO 10532 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
18:27:46:245 INFO 20440 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 10:58:07:804 INFO 10532 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 885 ms
18:27:46:249 INFO 20440 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 10:58:07:901 INFO 10532 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
18:27:46:249 INFO 20440 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 10:58:09:408 INFO 10532 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
18:27:46:284 INFO 20440 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 10:58:09:561 INFO 10532 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
18:27:46:284 INFO 20440 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 581 ms 10:58:09:823 INFO 10532 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 3.845 seconds (JVM running for 10.246)
18:27:46:478 INFO 20440 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 10:58:13:632 INFO 10532 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
18:27:46:859 INFO 20440 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 10:58:13:633 INFO 10532 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
18:27:46:901 INFO 20440 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.425 seconds (JVM running for 1.84) 10:58:13:638 INFO 10532 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms
18:30:11:824 INFO 21276 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 21276 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 10:58:13:721 INFO 10532 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
18:30:11:826 INFO 21276 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 10:58:14:017 INFO 10532 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
18:30:12:276 WARN 21276 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 10:58:14:076 ERROR 10532 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:密码错误
18:30:12:444 INFO 21276 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 10:58:35:405 INFO 10532 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
18:30:12:447 INFO 21276 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 10:58:35:406 INFO 10532 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
18:30:12:447 INFO 21276 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 10:58:35:411 INFO 10532 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
18:30:12:486 INFO 21276 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 11:00:10:601 INFO 13876 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 13876 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
18:30:12:486 INFO 21276 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 636 ms 11:00:10:603 INFO 13876 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
18:30:12:671 INFO 21276 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类... 11:00:11:451 INFO 13876 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
18:30:12:708 INFO 21276 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 11:00:11:458 INFO 13876 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
18:30:13:102 INFO 21276 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 11:00:11:458 INFO 13876 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
18:30:13:161 INFO 21276 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.535 seconds (JVM running for 1.937) 11:00:11:526 INFO 13876 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
18:30:44:868 INFO 21276 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 11:00:11:527 INFO 13876 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 892 ms
18:30:47:412 INFO 7124 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 7124 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 11:00:11:632 INFO 13876 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
18:30:47:413 INFO 7124 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 11:00:12:236 INFO 13876 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
18:30:47:844 WARN 7124 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 11:00:12:377 INFO 13876 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
18:30:48:014 INFO 7124 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 11:00:12:663 INFO 13876 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.309 seconds (JVM running for 8.84)
18:30:48:018 INFO 7124 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 11:00:27:431 INFO 13876 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
18:30:48:018 INFO 7124 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 11:00:27:431 INFO 13876 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
18:30:48:057 INFO 7124 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 11:00:27:435 INFO 13876 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
18:30:48:058 INFO 7124 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 623 ms 11:00:27:511 INFO 13876 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
18:30:48:239 INFO 7124 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类... 11:00:27:826 INFO 13876 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
18:30:48:273 INFO 7124 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 11:00:27:904 ERROR 13876 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:密码错误
18:30:48:669 INFO 7124 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 11:01:06:213 ERROR 13876 --- [http-nio-8800-exec-2] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:密码错误
18:30:48:728 INFO 7124 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.515 seconds (JVM running for 1.921) 11:01:25:712 INFO 13876 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
18:30:56:985 INFO 7124 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 11:01:25:714 INFO 13876 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
18:30:59:550 INFO 21220 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 21220 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 11:01:25:718 INFO 13876 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
18:30:59:552 INFO 21220 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 11:01:29:571 INFO 3564 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 3564 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
18:30:59:969 WARN 21220 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 11:01:29:574 INFO 3564 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
18:31:00:126 INFO 21220 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 11:01:30:428 INFO 3564 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
18:31:00:131 INFO 21220 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 11:01:30:435 INFO 3564 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
18:31:00:131 INFO 21220 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 11:01:30:435 INFO 3564 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
18:31:00:167 INFO 21220 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 11:01:30:498 INFO 3564 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
18:31:00:167 INFO 21220 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 594 ms 11:01:30:498 INFO 3564 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 889 ms
18:31:00:335 INFO 21220 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类... 11:01:30:603 INFO 3564 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
18:31:00:367 INFO 21220 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 11:01:31:166 INFO 3564 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
18:31:00:757 INFO 21220 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 11:01:31:305 INFO 3564 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
18:31:00:811 INFO 21220 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.459 seconds (JVM running for 1.87) 11:01:31:570 INFO 3564 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.257 seconds (JVM running for 2.678)
18:31:12:897 INFO 21220 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 11:01:31:666 INFO 3564 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
18:31:14:479 INFO 17940 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 17940 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 11:01:31:667 INFO 3564 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
18:31:14:480 INFO 17940 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 11:01:31:670 INFO 3564 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
18:31:14:890 WARN 17940 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 11:01:31:746 INFO 3564 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
18:31:15:042 INFO 17940 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 11:01:32:079 INFO 3564 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
18:31:15:045 INFO 17940 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 13:57:38:626 INFO 3564 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
18:31:15:045 INFO 17940 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 13:57:38:631 INFO 3564 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
18:31:15:080 INFO 17940 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 13:57:38:635 INFO 3564 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
18:31:15:081 INFO 17940 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 578 ms 13:57:42:338 INFO 26572 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 26572 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
18:31:15:243 INFO 17940 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类... 13:57:42:341 INFO 26572 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
18:31:15:274 INFO 17940 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 13:57:43:312 INFO 26572 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
18:31:15:665 INFO 17940 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 13:57:43:318 INFO 26572 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
18:31:15:722 INFO 17940 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.437 seconds (JVM running for 1.865) 13:57:43:319 INFO 26572 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
18:31:21:234 INFO 17940 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 13:57:43:387 INFO 26572 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
18:31:22:813 INFO 19156 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 19156 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 13:57:43:387 INFO 26572 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1002 ms
18:31:22:815 INFO 19156 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 13:57:43:483 INFO 26572 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
18:31:23:234 WARN 19156 --- [main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.atguigu.*.mapper]' package. Please check your configuration. 13:57:44:165 INFO 26572 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
18:31:23:384 INFO 19156 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 13:57:44:312 INFO 26572 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
18:31:23:389 INFO 19156 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 13:57:44:569 INFO 26572 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.527 seconds (JVM running for 2.947)
18:31:23:389 INFO 19156 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 14:01:09:795 INFO 26572 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
18:31:23:424 INFO 19156 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 14:01:09:795 INFO 26572 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
18:31:23:424 INFO 19156 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 586 ms 14:01:09:799 INFO 26572 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
18:31:23:601 INFO 19156 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类... 14:02:15:414 INFO 26572 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
18:31:23:635 INFO 19156 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 14:02:17:427 INFO 23312 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 23312 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
18:31:24:030 INFO 19156 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 14:02:17:429 INFO 23312 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
18:31:24:091 INFO 19156 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.485 seconds (JVM running for 1.914) 14:02:18:248 INFO 23312 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
18:39:42:950 INFO 19156 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 14:02:18:254 INFO 23312 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
18:39:47:115 INFO 6652 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on bunny with PID 6652 (G:\java项目\guigu-oa-parent\service-oa\target\classes started by 13199 in G:\java项目\guigu-oa-parent) 14:02:18:255 INFO 23312 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
18:39:47:117 INFO 6652 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev 14:02:18:313 INFO 23312 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
18:39:47:718 INFO 6652 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http) 14:02:18:313 INFO 23312 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 849 ms
18:39:47:721 INFO 6652 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 14:02:18:422 INFO 23312 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
18:39:47:721 INFO 6652 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39] 14:02:18:976 INFO 23312 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
18:39:47:756 INFO 6652 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 14:02:19:111 INFO 23312 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
18:39:47:756 INFO 6652 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 616 ms 14:02:19:385 INFO 23312 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.218 seconds (JVM running for 2.621)
18:39:47:823 INFO 6652 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类... 14:02:20:403 INFO 23312 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
18:39:48:375 INFO 6652 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 14:02:20:404 INFO 23312 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
18:39:48:456 INFO 6652 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path '' 14:02:20:408 INFO 23312 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
18:39:48:536 INFO 6652 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 1.644 seconds (JVM running for 2.071) 14:03:53:148 INFO 23312 --- [http-nio-8800-exec-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
18:39:51:553 INFO 6652 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 14:03:53:353 INFO 23312 --- [http-nio-8800-exec-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
18:39:51:553 INFO 6652 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 14:03:53:412 ERROR 23312 --- [http-nio-8800-exec-2] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>运行时异常信息Cannot invoke "java.lang.Long.longValue()" because "userId" is null
18:39:51:555 INFO 6652 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms 14:04:15:057 INFO 23312 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
18:40:02:303 INFO 6652 --- [http-nio-8800-exec-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 14:04:15:058 INFO 23312 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
18:40:02:498 INFO 6652 --- [http-nio-8800-exec-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 14:04:15:063 INFO 23312 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:04:18:624 INFO 28848 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 28848 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:04:18:626 INFO 28848 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:04:19:456 INFO 28848 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:04:19:463 INFO 28848 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:04:19:464 INFO 28848 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:04:19:526 INFO 28848 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:04:19:526 INFO 28848 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 867 ms
14:04:19:627 INFO 28848 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:04:20:199 INFO 28848 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:04:20:339 INFO 28848 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:04:20:597 INFO 28848 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.22 seconds (JVM running for 2.625)
14:04:22:040 INFO 28848 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:04:22:040 INFO 28848 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:04:22:047 INFO 28848 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 7 ms
14:04:25:916 INFO 28848 --- [http-nio-8800-exec-3] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:04:26:132 INFO 28848 --- [http-nio-8800-exec-3] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:04:26:261 ERROR 28848 --- [http-nio-8800-exec-3] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>运行时异常信息Cannot invoke "com.atguigu.model.system.SysUser.getName()" because "sysUser" is null
14:05:04:704 INFO 28848 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:05:04:706 INFO 28848 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:05:04:710 INFO 28848 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:05:07:171 INFO 17168 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 17168 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:05:07:173 INFO 17168 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:05:07:995 INFO 17168 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:05:08:001 INFO 17168 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:05:08:002 INFO 17168 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:05:08:066 INFO 17168 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:05:08:066 INFO 17168 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 860 ms
14:05:08:165 INFO 17168 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:05:08:721 INFO 17168 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:05:08:858 INFO 17168 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:05:09:117 INFO 17168 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.194 seconds (JVM running for 2.599)
14:05:10:629 INFO 17168 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:05:10:629 INFO 17168 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:05:10:633 INFO 17168 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
14:05:10:660 INFO 17168 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:05:10:887 INFO 17168 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:05:10:943 ERROR 17168 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:05:19:090 INFO 17168 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:05:19:091 INFO 17168 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:05:19:096 INFO 17168 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:05:22:449 INFO 22752 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 22752 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:05:22:451 INFO 22752 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:05:23:243 INFO 22752 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:05:23:249 INFO 22752 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:05:23:249 INFO 22752 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:05:23:309 INFO 22752 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:05:23:309 INFO 22752 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 828 ms
14:05:23:413 INFO 22752 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:05:23:942 INFO 22752 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:05:24:074 INFO 22752 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:05:24:326 INFO 22752 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.142 seconds (JVM running for 2.553)
14:05:31:736 INFO 22752 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:05:31:736 INFO 22752 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:05:31:740 INFO 22752 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:05:31:767 INFO 22752 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:05:31:994 INFO 22752 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:05:32:052 ERROR 22752 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:08:17:323 INFO 22752 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:08:17:325 INFO 22752 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:08:17:330 INFO 22752 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:08:19:772 INFO 16344 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 16344 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:08:19:774 INFO 16344 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:08:20:564 INFO 16344 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:08:20:571 INFO 16344 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:08:20:571 INFO 16344 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:08:20:632 INFO 16344 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:08:20:632 INFO 16344 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 828 ms
14:08:20:731 INFO 16344 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:08:21:281 INFO 16344 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:08:21:420 INFO 16344 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:08:21:595 INFO 16344 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:08:21:595 INFO 16344 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:08:21:599 INFO 16344 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:08:21:632 INFO 16344 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:08:21:692 INFO 16344 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.16 seconds (JVM running for 2.542)
14:08:21:891 INFO 16344 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:08:21:958 ERROR 16344 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:08:26:584 ERROR 16344 --- [http-nio-8800-exec-2] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:08:30:407 ERROR 16344 --- [http-nio-8800-exec-3] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:08:43:550 INFO 16344 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:08:43:551 INFO 16344 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:08:43:558 INFO 16344 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:08:46:896 INFO 6428 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 6428 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:08:46:898 INFO 6428 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:08:47:714 INFO 6428 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:08:47:720 INFO 6428 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:08:47:720 INFO 6428 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:08:47:777 INFO 6428 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:08:47:777 INFO 6428 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 845 ms
14:08:47:882 INFO 6428 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:08:48:461 INFO 6428 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:08:48:607 INFO 6428 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:08:48:871 INFO 6428 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.226 seconds (JVM running for 2.614)
14:08:50:600 INFO 6428 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:08:50:600 INFO 6428 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:08:50:604 INFO 6428 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:08:50:633 INFO 6428 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:08:50:843 INFO 6428 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:08:50:901 ERROR 6428 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:08:58:471 ERROR 6428 --- [http-nio-8800-exec-3] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:09:14:972 INFO 6428 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:09:14:973 INFO 6428 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:09:14:978 INFO 6428 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:09:17:379 INFO 31216 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 31216 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:09:17:381 INFO 31216 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:09:18:172 INFO 31216 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:09:18:178 INFO 31216 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:09:18:179 INFO 31216 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:09:18:234 INFO 31216 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:09:18:234 INFO 31216 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 820 ms
14:09:18:341 INFO 31216 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:09:18:884 INFO 31216 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:09:19:025 INFO 31216 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:09:19:278 INFO 31216 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.143 seconds (JVM running for 2.521)
14:09:19:814 INFO 31216 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:09:19:815 INFO 31216 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:09:19:819 INFO 31216 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
14:09:19:848 INFO 31216 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:09:20:053 INFO 31216 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:09:20:114 ERROR 31216 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:09:24:748 ERROR 31216 --- [http-nio-8800-exec-3] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:10:31:596 INFO 31216 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:10:31:598 INFO 31216 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:10:31:604 INFO 31216 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:10:35:056 INFO 24320 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 24320 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:10:35:058 INFO 24320 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:10:35:824 INFO 24320 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:10:35:830 INFO 24320 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:10:35:831 INFO 24320 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:10:35:884 INFO 24320 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:10:35:885 INFO 24320 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 797 ms
14:10:35:983 INFO 24320 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:10:36:490 INFO 24320 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:10:36:620 INFO 24320 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:10:36:864 INFO 24320 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.048 seconds (JVM running for 2.429)
14:10:40:812 INFO 24320 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:10:40:812 INFO 24320 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:10:40:816 INFO 24320 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:10:40:845 INFO 24320 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:10:41:053 INFO 24320 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:13:09:614 INFO 24320 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:13:09:615 INFO 24320 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:13:09:620 INFO 24320 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:13:11:964 INFO 10352 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 10352 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:13:11:965 INFO 10352 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:13:12:761 INFO 10352 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:13:12:768 INFO 10352 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:13:12:768 INFO 10352 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:13:12:828 INFO 10352 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:13:12:828 INFO 10352 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 831 ms
14:13:12:925 INFO 10352 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:13:13:484 INFO 10352 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:13:13:629 INFO 10352 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:13:13:898 INFO 10352 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.192 seconds (JVM running for 2.585)
14:13:14:593 INFO 10352 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:13:14:593 INFO 10352 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:13:14:597 INFO 10352 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:13:38:681 INFO 10352 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:13:41:714 INFO 23004 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 23004 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:13:41:716 INFO 23004 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:13:42:511 INFO 23004 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:13:42:517 INFO 23004 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:13:42:518 INFO 23004 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:13:42:579 INFO 23004 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:13:42:579 INFO 23004 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 829 ms
14:13:42:679 INFO 23004 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:13:43:243 INFO 23004 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:13:43:379 INFO 23004 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:13:43:485 INFO 23004 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:13:43:486 INFO 23004 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:13:43:491 INFO 23004 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms
14:13:43:651 INFO 23004 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.186 seconds (JVM running for 2.596)
14:14:08:104 INFO 23004 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:14:10:244 INFO 18600 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 18600 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:14:10:246 INFO 18600 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:14:11:052 INFO 18600 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:14:11:059 INFO 18600 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:14:11:059 INFO 18600 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:14:11:115 INFO 18600 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:14:11:115 INFO 18600 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 837 ms
14:14:11:218 INFO 18600 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:14:11:749 INFO 18600 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:14:11:888 INFO 18600 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:14:12:153 INFO 18600 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.167 seconds (JVM running for 2.573)
14:14:15:123 INFO 18600 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:14:15:123 INFO 18600 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:14:15:126 INFO 18600 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
14:15:29:156 INFO 18600 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:15:32:653 INFO 20408 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 20408 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:15:32:654 INFO 20408 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:15:33:437 INFO 20408 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:15:33:443 INFO 20408 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:15:33:443 INFO 20408 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:15:33:506 INFO 20408 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:15:33:506 INFO 20408 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 820 ms
14:15:33:609 INFO 20408 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:15:34:125 INFO 20408 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:15:34:260 INFO 20408 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:15:34:511 INFO 20408 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.116 seconds (JVM running for 2.505)
14:15:45:080 INFO 20408 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:15:45:080 INFO 20408 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:15:45:084 INFO 20408 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:16:25:662 INFO 20408 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:16:28:044 INFO 13272 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 13272 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:16:28:046 INFO 13272 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:16:28:861 INFO 13272 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:16:28:869 INFO 13272 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:16:28:869 INFO 13272 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:16:28:931 INFO 13272 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:16:28:932 INFO 13272 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 851 ms
14:16:29:032 INFO 13272 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:16:29:602 INFO 13272 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:16:29:743 INFO 13272 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:16:30:017 INFO 13272 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.232 seconds (JVM running for 2.626)
14:16:33:582 INFO 13272 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:16:33:582 INFO 13272 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:16:33:585 INFO 13272 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
14:16:33:615 INFO 13272 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
14:16:33:850 INFO 13272 --- [http-nio-8800-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
14:16:33:908 ERROR 13272 --- [http-nio-8800-exec-1] c.a.exception.GlobalExceptionHandler : GlobalExceptionHandler===>自定义异常信息:用户不存在
14:49:35:578 INFO 13272 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:49:35:579 INFO 13272 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
14:49:35:581 INFO 13272 --- [SpringContextShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
14:49:40:028 INFO 26124 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 26124 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:49:40:030 INFO 26124 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:49:40:939 INFO 26124 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:49:40:950 INFO 26124 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:49:40:951 INFO 26124 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:49:41:016 INFO 26124 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:49:41:016 INFO 26124 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 948 ms
14:49:41:117 INFO 26124 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:49:41:710 INFO 26124 --- [main] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: 22e6691e-e731-4b1b-bbb7-49c861afe133
14:49:41:792 INFO 26124 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2e1ba142, org.springframework.security.web.context.SecurityContextPersistenceFilter@1cc93da4, org.springframework.security.web.header.HeaderWriterFilter@35e689a0, org.springframework.security.web.csrf.CsrfFilter@280d5a82, org.springframework.security.web.authentication.logout.LogoutFilter@19647566, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@7769d9b6, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@273293c8, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@abc7005, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@7878bbdb, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7e38e254, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@17136390, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@595ec862, org.springframework.security.web.session.SessionManagementFilter@3bf5911d, org.springframework.security.web.access.ExceptionTranslationFilter@64f3991e, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3b33fff9]
14:49:41:845 INFO 26124 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:49:41:999 INFO 26124 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:49:42:269 INFO 26124 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.505 seconds (JVM running for 2.966)
14:51:02:789 INFO 26124 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:51:02:789 INFO 26124 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:51:02:793 INFO 26124 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
14:52:05:584 INFO 26124 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:52:08:294 INFO 28940 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 28940 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:52:08:296 INFO 28940 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:52:09:241 INFO 28940 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:52:09:248 INFO 28940 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:52:09:248 INFO 28940 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:52:09:312 INFO 28940 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:52:09:312 INFO 28940 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 977 ms
14:52:09:429 INFO 28940 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:52:10:030 INFO 28940 --- [main] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: ae2ed156-c680-449d-ad9e-71583c31ef54
14:52:10:100 INFO 28940 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@53e28097, org.springframework.security.web.context.SecurityContextPersistenceFilter@35e689a0, org.springframework.security.web.header.HeaderWriterFilter@21a5b599, org.springframework.security.web.csrf.CsrfFilter@59f3426f, org.springframework.security.web.authentication.logout.LogoutFilter@3041beb3, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@fd87c22, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@6dcbbb49, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@6e794f53, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@4ca0b9b1, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3bf5911d, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@69a90b81, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@75f4d8a8, org.springframework.security.web.session.SessionManagementFilter@64f3991e, org.springframework.security.web.access.ExceptionTranslationFilter@1de08775, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@500ec769]
14:52:10:151 INFO 28940 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:52:10:297 INFO 28940 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:52:10:570 INFO 28940 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.611 seconds (JVM running for 3.178)
14:52:12:610 INFO 28940 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:52:12:611 INFO 28940 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:52:12:614 INFO 28940 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
14:53:24:672 INFO 28940 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:53:27:344 INFO 9704 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 9704 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:53:27:346 INFO 9704 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:53:28:360 INFO 9704 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:53:28:367 INFO 9704 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:53:28:367 INFO 9704 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:53:28:444 INFO 9704 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:53:28:445 INFO 9704 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1046 ms
14:53:28:560 INFO 9704 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:53:29:142 INFO 9704 --- [main] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: 8096bafc-491c-41f3-80b4-f6829ee2cb99
14:53:29:209 INFO 9704 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@102af1bb, org.springframework.security.web.context.SecurityContextPersistenceFilter@2e4ecdf8, org.springframework.security.web.header.HeaderWriterFilter@1cc93da4, org.springframework.security.web.csrf.CsrfFilter@6efd0a6e, org.springframework.security.web.authentication.logout.LogoutFilter@2335aef2, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@5af38a4a, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@333e5fb6, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@797f97e3, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@6e794f53, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@69a90b81, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@a120b9, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@56cd5d76, org.springframework.security.web.session.SessionManagementFilter@7e38e254, org.springframework.security.web.access.ExceptionTranslationFilter@3bf5911d, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3b9c9b8b]
14:53:29:261 INFO 9704 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:53:29:412 INFO 9704 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:53:29:684 INFO 9704 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.756 seconds (JVM running for 3.209)
14:53:47:436 INFO 9704 --- [http-nio-8800-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:53:47:437 INFO 9704 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:53:47:440 INFO 9704 --- [http-nio-8800-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
14:54:12:750 INFO 9704 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
14:54:14:216 INFO 16348 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 16348 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
14:54:14:218 INFO 16348 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
14:54:15:134 INFO 16348 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
14:54:15:141 INFO 16348 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
14:54:15:142 INFO 16348 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
14:54:15:202 INFO 16348 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
14:54:15:202 INFO 16348 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 947 ms
14:54:15:319 INFO 16348 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
14:54:15:938 INFO 16348 --- [main] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: c1b9b421-40ec-420f-88cd-c249c5d26684
14:54:16:006 INFO 16348 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@75f4d8a8, org.springframework.security.web.context.SecurityContextPersistenceFilter@3bf5911d, org.springframework.security.web.header.HeaderWriterFilter@64f3991e, org.springframework.security.web.csrf.CsrfFilter@6cc8adff, org.springframework.security.web.authentication.logout.LogoutFilter@2e40fdbd, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@1ff463bb, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@36c783ca, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@69ba72da, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@1be77a76, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1cc93da4, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@35329a05, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2e1ba142, org.springframework.security.web.session.SessionManagementFilter@35e689a0, org.springframework.security.web.access.ExceptionTranslationFilter@21a5b599, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7bce9ce4]
14:54:16:058 INFO 16348 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
14:54:16:203 INFO 16348 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
14:54:16:485 INFO 16348 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 2.538 seconds (JVM running for 2.963)
14:54:25:577 INFO 16348 --- [http-nio-8800-exec-4] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
14:54:25:578 INFO 16348 --- [http-nio-8800-exec-4] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
14:54:25:583 INFO 16348 --- [http-nio-8800-exec-4] o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms
16:12:27:427 INFO 16348 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
16:22:14:238 INFO 23040 --- [main] com.atguigu.auth.ServiceAuthApplication : Starting ServiceAuthApplication on Bunny with PID 23040 (F:\java项目\guigu-oa\guigu-oa\service-oa\target\classes started by ACE in F:\java项目\guigu-oa\guigu-oa)
16:22:14:239 INFO 23040 --- [main] com.atguigu.auth.ServiceAuthApplication : The following profiles are active: dev
16:22:14:830 INFO 23040 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
16:22:14:833 INFO 23040 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
16:22:14:855 INFO 23040 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 13ms. Found 0 Redis repository interfaces.
16:22:15:081 INFO 23040 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@3c232051' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
16:22:15:085 INFO 23040 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
16:22:15:412 INFO 23040 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8800 (http)
16:22:15:418 INFO 23040 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
16:22:15:418 INFO 23040 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
16:22:15:478 INFO 23040 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
16:22:15:478 INFO 23040 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1206 ms
16:22:15:587 INFO 23040 --- [main] com.atguigu.config.MybatisPlusConfig : 注入MybatisPlus配置类...
16:22:16:085 INFO 23040 --- [main] com.atguigu.config.RedisConfiguration : RedisConfiguration===>使用StringRedisSerializer序列化为字符串
16:22:16:347 INFO 23040 --- [main] com.atguigu.config.RedisConfiguration : RedisConfiguration===>解决cache(@Cacheable)把数据缓存到redis中的value是乱码问题
16:22:16:351 INFO 23040 --- [main] com.atguigu.config.RedisConfiguration : RedisConfiguration===>指定的日期模式
16:22:16:428 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/admin/modeler/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/diagram-viewer/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/editor-app/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/*.html'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/admin/processImage/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/admin/wechat/authorize'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/admin/wechat/userInfo'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/admin/wechat/bindPhone'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/favicon.ico'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/swagger-resources/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/webjars/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/v2/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/swagger-ui.html/**'], []
16:22:16:429 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: Ant [pattern='/doc.html'], []
16:22:16:495 INFO 23040 --- [main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@39403943, org.springframework.security.web.context.SecurityContextPersistenceFilter@6e7f29d5, org.springframework.security.web.header.HeaderWriterFilter@ff8e36d, org.springframework.web.filter.CorsFilter@1c5fd813, org.springframework.security.web.authentication.logout.LogoutFilter@63ad5fe7, com.atguigu.security.filter.TokenAuthenticationFilter@49338f3, com.atguigu.security.filter.TokenLoginFilter@3c9971af, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7f94541b, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@618fb1, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4abdd5e, org.springframework.security.web.session.SessionManagementFilter@4f22fd5d, org.springframework.security.web.access.ExceptionTranslationFilter@94aeba1, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7adbec34]
16:22:16:531 INFO 23040 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
16:22:16:712 INFO 23040 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8800 (http) with context path ''
16:22:16:982 INFO 23040 --- [main] com.atguigu.auth.ServiceAuthApplication : Started ServiceAuthApplication in 3.025 seconds (JVM running for 3.551)
16:22:35:146 INFO 23040 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'

View File

@ -0,0 +1,14 @@
package com.atguigu.model.system;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Login {
private String token;
}

View File

@ -0,0 +1,22 @@
package com.atguigu.model.system;
import com.atguigu.vo.system.RouterVo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashSet;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SysUserinfo {
private HashSet<String> roles;
private String name;
private String avatar;
private List<String> buttons;
private List<RouterVo> routers;
}

View File

@ -18,6 +18,7 @@
<module>common</module> <module>common</module>
<module>model</module> <module>model</module>
<module>service-oa</module> <module>service-oa</module>
<module>common/spring-security</module>
</modules> </modules>
<properties> <properties>

View File

@ -28,6 +28,11 @@
<artifactId>service-util</artifactId> <artifactId>service-util</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>spring-security</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -40,7 +40,7 @@ public class Knife4jConfig {
.select() .select()
// 只显示admin路径下的页面 // 只显示admin路径下的页面
.apis(RequestHandlerSelectors.basePackage("com.atguigu")) .apis(RequestHandlerSelectors.basePackage("com.atguigu"))
.paths(PathSelectors.regex("/admin/.*")) .paths(PathSelectors.ant("/admin/**"))// PathSelectors.regex("/admin/.*")
.build() .build()
.globalOperationParameters(pars); .globalOperationParameters(pars);
} }

View File

@ -1,14 +1,16 @@
package com.atguigu.auth.controller; package com.atguigu.auth.controller;
import com.atguigu.auth.service.SysUserService;
import com.atguigu.common.result.Result; import com.atguigu.common.result.Result;
import com.atguigu.model.system.Login;
import com.atguigu.model.system.SysUserinfo;
import com.atguigu.vo.system.LoginVo;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import javax.servlet.http.HttpServletRequest;
import java.util.Map; import java.util.Map;
/** /**
@ -16,27 +18,25 @@ import java.util.Map;
* 后台登录登出 * 后台登录登出
* </p> * </p>
*/ */
@Tag(name = "后台登录管理") @Api(tags = "后台登录管理")
@RestController @RestController
@RequestMapping("/admin/system/index") @RequestMapping("/admin/system/index")
public class IndexController { public class IndexController {
@Autowired
private SysUserService sysUserService;
@Operation(summary = "登录", description = "登录") @Operation(summary = "登录", description = "登录")
@PostMapping("login") @PostMapping("login")
public Result<Map<String, Object>> login() { public Result<Login> login(@RequestBody LoginVo loginVo) {
Map<String, Object> map = new HashMap<>(); Login login = sysUserService.login(loginVo);
map.put("token", "admin"); return Result.success(login);
return Result.success(map);
} }
@Operation(summary = "获取用户信息", description = "获取用户信息") @Operation(summary = "获取用户信息", description = "获取用户信息")
@GetMapping("info") @GetMapping("info")
public Result<Map<String, Object>> info() { public Result<SysUserinfo> info(HttpServletRequest request) {
Map<String, Object> map = new HashMap<>(); SysUserinfo userinfo = sysUserService.getUserinfo(request);
map.put("roles", "[admin]"); return Result.success(userinfo);
map.put("name", "admin");
map.put("avatar", "https://oss.aliyuncs.com/aliyun_id_photo_bucket/default_handsome.jpg");
return Result.success(map);
} }
@Operation(summary = "退出", description = "退出") @Operation(summary = "退出", description = "退出")

View File

@ -0,0 +1,72 @@
package com.atguigu.auth.controller;
import com.atguigu.auth.service.SysMenuService;
import com.atguigu.common.result.Result;
import com.atguigu.model.system.SysMenu;
import com.atguigu.vo.system.AssginMenuVo;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 菜单表 前端控制器
* </p>
*
* @author bunny
* @since 2024-04-23
*/
@Api(tags = "菜单管理")
@RestController
@RequestMapping("/admin/system/sysMenu")
public class SysMenuController {
@Autowired
private SysMenuService sysMenuService;
@Operation(summary = "获取菜单", description = "获取菜单")
@GetMapping("findNodes")
public Result<List<SysMenu>> findNodes() {
List<SysMenu> list = sysMenuService.findNodes();
return Result.success(list);
}
@Operation(summary = "新增菜单", description = "新增菜单")
@PostMapping("save")
public Result<SysMenu> save(@RequestBody SysMenu permission) {
sysMenuService.save(permission);
return Result.success();
}
@Operation(summary = "修改菜单", description = "修改菜单")
@PutMapping("update")
public Result<SysMenu> updateById(@RequestBody SysMenu permission) {
sysMenuService.updateById(permission);
return Result.success();
}
@Operation(summary = "删除菜单", description = "删除菜单")
@DeleteMapping("remove/{id}")
public Result<SysMenu> remove(@PathVariable Long id) {
sysMenuService.removeMenuById(id);
return Result.success();
}
@Operation(summary = "根据角色获取菜单", description = "根据角色获取菜单")
@GetMapping("toAssign/{roleId}")
public Result<List<SysMenu>> toAssign(@PathVariable Long roleId) {
List<SysMenu> sysMenuList = sysMenuService.findSysMenuByRoleId(roleId);
return Result.success(sysMenuList);
}
@Operation(summary = "给角色分配权限", description = "给角色分配权限")
@PostMapping("doAssign")
public Result<AssginMenuVo> doAssign(@RequestBody AssginMenuVo assginMenuVo) {
sysMenuService.doAssign(assginMenuVo);
return Result.success();
}
}

View File

@ -7,16 +7,15 @@ import com.atguigu.model.system.SysRole;
import com.atguigu.vo.system.AssginRoleVo; import com.atguigu.vo.system.AssginRoleVo;
import com.atguigu.vo.system.SysRoleQueryVo; import com.atguigu.vo.system.SysRoleQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
@Tag(name = "角色管理接口") @Api(tags = "角色管理接口")
@RestController @RestController
@RequestMapping("/admin/system/sysRole") @RequestMapping("/admin/system/sysRole")
public class SysRoleController { public class SysRoleController {

View File

@ -0,0 +1,21 @@
package com.atguigu.auth.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 角色菜单 前端控制器
* </p>
*
* @author bunny
* @since 2024-04-23
*/
@RestController
@RequestMapping("/auth/sys-role-menu")
public class SysRoleMenuController {
}

View File

@ -6,8 +6,8 @@ import com.atguigu.common.result.Result;
import com.atguigu.model.system.SysUser; import com.atguigu.model.system.SysUser;
import com.atguigu.vo.system.SysUserQueryVo; import com.atguigu.vo.system.SysUserQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -21,7 +21,7 @@ import java.util.List;
* @author bunny * @author bunny
* @since 2024-04-22 * @since 2024-04-22
*/ */
@Tag(name = "用户管理接口") @Api(tags = "用户管理接口")
@RestController @RestController
@RequestMapping("/admin/system/sysUser") @RequestMapping("/admin/system/sysUser")
public class SysUserController { public class SysUserController {

View File

@ -0,0 +1,25 @@
package com.atguigu.auth.mapper;
import com.atguigu.model.system.SysMenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* <p>
* 菜单表 Mapper 接口
* </p>
*
* @author bunny
* @since 2024-04-23
*/
public interface SysMenuMapper extends BaseMapper<SysMenu> {
/**
* 根据用户ID查询菜单列表
*
* @param userId 用户ID
* @return 菜单列表
*/
List<SysMenu> findMenuListByUserId(Long userId);
}

View File

@ -15,4 +15,12 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
* @return 角色列表 * @return 角色列表
*/ */
List<SysRole> selectByUserId(Long userId); List<SysRole> selectByUserId(Long userId);
/**
* 根据角色id获取角色权限
*
* @param roleId 角色Id
* @return 菜单列表Id
*/
List<Long> selectByRoleId4MenuId(Long roleId);
} }

View File

@ -0,0 +1,16 @@
package com.atguigu.auth.mapper;
import com.atguigu.model.system.SysRoleMenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 角色菜单 Mapper 接口
* </p>
*
* @author bunny
* @since 2024-04-23
*/
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
}

View File

@ -0,0 +1,64 @@
package com.atguigu.auth.service;
import com.atguigu.model.system.SysMenu;
import com.atguigu.vo.system.AssginMenuVo;
import com.atguigu.vo.system.RouterVo;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 菜单表 服务类
* </p>
*
* @author bunny
* @since 2024-04-23
*/
public interface SysMenuService extends IService<SysMenu> {
/**
* 获取菜单
*
* @return 菜单列表
*/
List<SysMenu> findNodes();
/**
* 删除菜单
*
* @param id 菜单id
*/
void removeMenuById(Long id);
/**
* 根据角色获取菜单
*
* @param roleId 角色id
* @return 菜单列表
*/
List<SysMenu> findSysMenuByRoleId(Long roleId);
/**
* 给角色分配权限
*
* @param assginMenuVo 分配条件
*/
void doAssign(AssginMenuVo assginMenuVo);
/**
* 根据用户ID查询用户可以操作的菜单列表
*
* @param userId 用户ID
* @return 路由信息
*/
List<RouterVo> findUserMenuListByUserId(Long userId);
/**
* 根据用户ID查询用户按钮权限
*
* @param userId 用户ID
* @return 按钮权限
*/
List<String> findUserPermsList(Long userId);
}

View File

@ -0,0 +1,16 @@
package com.atguigu.auth.service;
import com.atguigu.model.system.SysRoleMenu;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 角色菜单 服务类
* </p>
*
* @author bunny
* @since 2024-04-23
*/
public interface SysRoleMenuService extends IService<SysRoleMenu> {
}

View File

@ -1,10 +1,15 @@
package com.atguigu.auth.service; package com.atguigu.auth.service;
import com.atguigu.model.system.Login;
import com.atguigu.model.system.SysUser; import com.atguigu.model.system.SysUser;
import com.atguigu.model.system.SysUserinfo;
import com.atguigu.vo.system.LoginVo;
import com.atguigu.vo.system.SysUserQueryVo; import com.atguigu.vo.system.SysUserQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletRequest;
/** /**
* <p> * <p>
* 用户表 服务类 * 用户表 服务类
@ -32,4 +37,28 @@ public interface SysUserService extends IService<SysUser> {
* @param status 修改的状态 * @param status 修改的状态
*/ */
void updateStatus(Long id, Long status); void updateStatus(Long id, Long status);
/**
* 登录
*
* @param vo 登录条件
* @return 返回token
*/
Login login(LoginVo vo);
/**
* 获取用户信息
*
* @param request 请求头
* @return 用户信息
*/
SysUserinfo getUserinfo(HttpServletRequest request);
/**
* 根据用户名查询用户信息
*
* @param username 用户名
* @return 用户信息
*/
SysUser getByUsername(String username);
} }

View File

@ -0,0 +1,155 @@
package com.atguigu.auth.service.impl;
import com.atguigu.auth.mapper.SysMenuMapper;
import com.atguigu.auth.mapper.SysRoleMapper;
import com.atguigu.auth.service.SysMenuService;
import com.atguigu.auth.service.SysRoleMenuService;
import com.atguigu.common.utlis.MenuHelper;
import com.atguigu.constant.MessageConstant;
import com.atguigu.exception.BunnyException;
import com.atguigu.model.system.SysMenu;
import com.atguigu.model.system.SysRoleMenu;
import com.atguigu.vo.system.AssginMenuVo;
import com.atguigu.vo.system.RouterVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 菜单表 服务实现类
* </p>
*
* @author bunny
* @since 2024-04-23
*/
@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysRoleMapper sysRoleMapper;
/**
* 获取菜单
*
* @return 菜单列表
*/
@Override
public List<SysMenu> findNodes() {
return MenuHelper.buildTree(list());
}
/**
* 删除菜单
*
* @param id 菜单id
*/
@Override
public void removeMenuById(Long id) {
// 判断当前菜单是否有下级菜单
LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysMenu::getParentId, id);
// 查询菜单列表
List<SysMenu> sysMenuList = list(wrapper);
// 为空时可以删除
if (sysMenuList == null) removeById(id);
// 如果不为空抛出异常
throw new BunnyException(MessageConstant.DELETE_MENU_ERROR_HAS_MENUS);
}
/**
* 根据角色获取菜单
*
* @param roleId 角色id
* @return 菜单列表
*/
@Override
public List<SysMenu> findSysMenuByRoleId(Long roleId) {
// 查询所有权限列表
LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysMenu::getStatus, 1);
List<SysMenu> allSysMenuList = list(wrapper);
// 根据角色id获取角色权限
List<Long> menuIdList = sysRoleMapper.selectByRoleId4MenuId(roleId);
allSysMenuList.forEach(permission -> {
permission.setSelect(menuIdList.contains(permission.getId()));
});
return MenuHelper.buildTree(allSysMenuList);
}
/**
* 给角色分配权限
*
* @param vo 分配条件
*/
@Transactional
@Override
public void doAssign(AssginMenuVo vo) {
// 删除之前的
sysRoleMenuService.remove(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, vo.getRoleId()));
ArrayList<SysRoleMenu> sysRoleMenuArrayList = new ArrayList<>();
// 为角色分配菜单
vo.getMenuIdList().forEach(menuId -> {
if (!StringUtils.isEmpty(menuId)) {
SysRoleMenu sysRoleMenu = new SysRoleMenu();
sysRoleMenu.setRoleId(vo.getRoleId());
sysRoleMenu.setMenuId(menuId);
sysRoleMenuArrayList.add(sysRoleMenu);
}
});
// 批量添加
sysRoleMenuService.saveBatch(sysRoleMenuArrayList);
}
/**
* 根据用户ID查询用户可以操作的菜单列表
*
* @param userId 用户ID
* @return 路由信息
*/
@Override
public List<RouterVo> findUserMenuListByUserId(Long userId) {
List<SysMenu> sysMenuList;
if (userId == 1) {
LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysMenu::getStatus, 1);
wrapper.orderByAsc(SysMenu::getSortValue);
sysMenuList = list(wrapper);
} else {
// 根据用户ID查询菜单列表
sysMenuList = baseMapper.findMenuListByUserId(userId);
}
// 构建成树型结构
List<SysMenu> menuList = MenuHelper.buildTree(sysMenuList);
return MenuHelper.buildRouter(menuList);
}
/**
* 根据用户ID查询用户按钮权限
*
* @param userId 用户ID
* @return 按钮权限
*/
@Override
public List<String> findUserPermsList(Long userId) {
return null;
}
}

View File

@ -0,0 +1,20 @@
package com.atguigu.auth.service.impl;
import com.atguigu.auth.mapper.SysRoleMenuMapper;
import com.atguigu.auth.service.SysRoleMenuService;
import com.atguigu.model.system.SysRoleMenu;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单 服务实现类
* </p>
*
* @author bunny
* @since 2024-04-23
*/
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
}

View File

@ -1,16 +1,31 @@
package com.atguigu.auth.service.impl; package com.atguigu.auth.service.impl;
import com.atguigu.auth.mapper.SysUserMapper; import com.atguigu.auth.mapper.SysUserMapper;
import com.atguigu.auth.service.SysMenuService;
import com.atguigu.auth.service.SysUserService; import com.atguigu.auth.service.SysUserService;
import com.atguigu.common.utlis.JwtHelper;
import com.atguigu.constant.MessageConstant;
import com.atguigu.exception.BunnyException;
import com.atguigu.model.system.Login;
import com.atguigu.model.system.SysUser; import com.atguigu.model.system.SysUser;
import com.atguigu.model.system.SysUserinfo;
import com.atguigu.vo.system.LoginVo;
import com.atguigu.vo.system.RouterVo;
import com.atguigu.vo.system.SysUserQueryVo; import com.atguigu.vo.system.SysUserQueryVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.HashSet;
import java.util.List;
/** /**
* <p> * <p>
* 用户表 服务实现类 * 用户表 服务实现类
@ -21,6 +36,8 @@ import org.springframework.util.StringUtils;
*/ */
@Service @Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService { public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
@Autowired
private SysMenuService sysMenuService;
/** /**
* 用户条件分页查询 * 用户条件分页查询
@ -66,4 +83,80 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 更新用户状态 // 更新用户状态
updateById(sysUser); updateById(sysUser);
} }
/**
* 登录
*
* @param vo 登录条件
* @return 返回token
*/
@Override
public Login login(LoginVo vo) {
String username = vo.getUsername();
String password = vo.getPassword();
// 查询用户信息
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysUser::getUsername, username);
SysUser sysUser = getOne(wrapper);
// 用户是否存在
if (sysUser == null) {
throw new BunnyException(MessageConstant.ACCOUNT_NOT_FOUND);
}
// 判断是否被禁用
if (sysUser.getStatus() == 0) {
throw new BunnyException(MessageConstant.ACCOUNT_LOCKED);
}
// 判断密码
String md5DigestAsHexPassword = DigestUtils.md5DigestAsHex(password.getBytes());
if (!md5DigestAsHexPassword.equals(sysUser.getPassword())) {
throw new BunnyException(MessageConstant.PASSWORD_ERROR);
}
// 添加token
String token = JwtHelper.createToken(sysUser.getId(), sysUser.getUsername());
return Login.builder().token(token).build();
}
/**
* 获取用户信息
*
* @param request 请求头
* @return 用户信息
*/
@Override
public SysUserinfo getUserinfo(HttpServletRequest request) {
// 从请求头中获取用户信息
String token = request.getHeader("token");
// 从token中获取字符串Id
Long userId = JwtHelper.getUserId(token);
// 根据用户Id查询用户表
SysUser sysUser = getById(userId);
if (sysUser == null) {
throw new BunnyException(MessageConstant.USER_DOES_NOT_EXIST);
}
// 根据用户ID查询用户可以操作的菜单列表
List<RouterVo> routerVoList = sysMenuService.findUserMenuListByUserId(userId);
// 根据用户ID查询用户按钮权限
List<String> permsList = sysMenuService.findUserPermsList(userId);
return SysUserinfo.builder()
.name(sysUser.getName())
.avatar("https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif")
.roles(new HashSet<>())
.buttons(permsList)
.routers(routerVoList)
.build();
}
/**
* 根据用户名查询用户信息
*
* @param username 用户名
* @return 用户信息
*/
@Override
public SysUser getByUsername(String username) {
return getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, username));
}
} }

View File

@ -0,0 +1,34 @@
package com.atguigu.auth.service.impl;
import com.atguigu.auth.service.SysUserService;
import com.atguigu.constant.MessageConstant;
import com.atguigu.exception.BunnyException;
import com.atguigu.model.system.SysUser;
import com.atguigu.security.custom.CustomUser;
import com.atguigu.security.service.UserDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import java.util.Collections;
@Component
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private SysUserService sysUserService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
SysUser sysUser = sysUserService.getByUsername(username);
if (null == sysUser) {
throw new UsernameNotFoundException(MessageConstant.USER_DOES_NOT_EXIST);
}
if (sysUser.getStatus() == 0) {
throw new BunnyException(MessageConstant.ACCOUNT_LOCKED);
}
return new CustomUser(sysUser, Collections.emptyList());
}
}

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.auth.mapper.SysMenuMapper">
<!-- 用于select查询公用抽取的列 -->
<sql id="columns">
m.id,m.parent_id,m.name,m.type,m.path,m.component,m.perms,m.icon,m.sort_value,m.status,m.create_time,m.update_time,m.is_deleted
</sql>
<select id="findMenuListByUserId" resultType="com.atguigu.model.system.SysMenu">
select
distinct
<include refid="columns"/>
from sys_menu m
inner join sys_role_menu rm on rm.menu_id = m.id
inner join sys_user_role ur on ur.role_id = rm.role_id
where
ur.user_id = #{userId}
and m.status = 1
and rm.is_deleted = 0
and ur.is_deleted = 0
and m.is_deleted = 0
</select>
</mapper>

View File

@ -7,4 +7,11 @@
FROM sys_role FROM sys_role
WHERE id IN (SELECT role_id FROM sys_user_role WHERE user_id = #{user_id}) WHERE id IN (SELECT role_id FROM sys_user_role WHERE user_id = #{user_id})
</select> </select>
<!-- 根据角色id获取角色权限 -->
<select id="selectByRoleId4MenuId" resultType="java.lang.Long">
SELECT menu_id
FROM sys_role_menu
WHERE role_id = #{role_id}
</select>
</mapper> </mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.auth.mapper.SysRoleMenuMapper">
</mapper>

View File

@ -1,21 +0,0 @@
server:
port: 8800
bunny:
datasource:
host: 106.15.251.123
port: 3305
sqlData: guigu-oa
username: root
password: "02120212"
# nacos:
# server-addr: z-bunny.cn:8848
# discovery:
# namespace: ssyx
#
# minio:
# endpointUrl: "http://129.211.31.58:9000"
# bucket-name: ssyx
# accessKey: bunny
# secretKey: "02120212"

View File

@ -1,34 +0,0 @@
server:
port: 8800
spring:
application:
name: service-oa
profiles:
active: dev
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
username: ${bunny.datasource.username}
password: ${bunny.datasource.password}
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志
logging:
level:
com.atguigu.auth.mapper: debug
com.atguigu.auth.controller: info
com.atguigu.auth.service: info
pattern:
dateformat: HH:mm:ss:SSS
file:
path: "logs/${spring.application.name}"

View File

@ -1,16 +0,0 @@
-----------------▄██-█▄---------
-----------------███▄██▄--------
-----------------███████--------
-----------------▀███████-------
-------------------██████▄▄-----
-------------------█████████▄---
-------------------██████▄████--
-------▄███████████████████████-
-----▄███████████████████████▀--
---▄██████████████████████------
---███████████████████████------
---███████████████████████------
-▄▄██████████████████████▀------
-█████████████████▀█████--------
-▀██████████████▀▀-▀█████▄------
-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB