From e1fa3582ea1046ea1dd92d76f25ad1352091eaa1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E6=98=A5=E5=85=89?= <1992lcg@163.com>
Date: Sat, 29 Dec 2018 18:36:03 +0800
Subject: [PATCH 01/11] pass
---
clouddo-admin/pom.xml | 297 +++++++++---------
.../clouddoadmin/config/AuthConfig.java | 34 +-
.../config/Oauth2ServiceConfig.java | 64 ++++
.../config/ResourceServerConfig.java | 26 ++
.../config/SecurityConfigurerAdapter.java | 45 +++
.../controller/UserController.java | 6 +
.../service/impl/UserDetailsServiceImpl.java | 23 ++
clouddo-base/pom.xml | 5 +
.../clouddobase/ClouddoBaseApplication.java | 7 +
.../config/ResourceServerConfig.java | 38 +++
.../clouddobase/controller/LogController.java | 2 +
.../controller/UserController.java | 19 ++
.../src/main/resources/application.yml | 12 +-
clouddo-common/pom.xml | 17 +-
.../OAuth2FeignRequestInterceptor.java | 35 +++
clouddo-zuul/pom.xml | 7 +
.../clouddozuul/ClouddoZuulApplication.java | 1 +
.../clouddozuul/filter/AccessFilter.java | 48 +--
.../src/main/resources/application.yml | 9 +
19 files changed, 504 insertions(+), 191 deletions(-)
create mode 100644 clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/Oauth2ServiceConfig.java
create mode 100644 clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/ResourceServerConfig.java
create mode 100644 clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java
create mode 100644 clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
create mode 100644 clouddo-base/src/main/java/com/bootdo/clouddobase/config/ResourceServerConfig.java
create mode 100644 clouddo-base/src/main/java/com/bootdo/clouddobase/controller/UserController.java
create mode 100644 clouddo-common/src/main/java/com/bootdo/clouddocommon/intercepter/OAuth2FeignRequestInterceptor.java
diff --git a/clouddo-admin/pom.xml b/clouddo-admin/pom.xml
index 823d693..d407900 100644
--- a/clouddo-admin/pom.xml
+++ b/clouddo-admin/pom.xml
@@ -1,156 +1,167 @@
- 4.0.0
-
- com.bootdo
- clouddo-admin
- 0.0.1-SNAPSHOT
- jar
-
- clouddo-admin
- Demo project for Spring Boot
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.0.4.RELEASE
-
-
-
-
- UTF-8
- UTF-8
- 1.8
- Finchley.SR1
- 1.1.0.Final
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-netflix-eureka-server
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- mysql
- mysql-connector-java
-
-
- org.mybatis
- mybatis
- 3.4.4
-
-
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter
- 1.1.1
-
-
-
- org.apache.shiro
- shiro-core
- 1.3.2
-
-
-
- com.alibaba
- fastjson
- 1.2.42
-
-
-
- io.jsonwebtoken
- jjwt
- 0.7.0
-
-
-
-
- org.springframework.boot
- spring-boot-starter-websocket
-
-
- org.springframework
- spring-context-support
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+
+ com.bootdo
+ clouddo-admin
+ 0.0.1-SNAPSHOT
+ jar
+
+ clouddo-admin
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.4.RELEASE
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ Finchley.SR1
+ 1.1.0.Final
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-server
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ mysql
+ mysql-connector-java
+
+
+ org.mybatis
+ mybatis
+ 3.4.4
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 1.1.1
+
+
+
+ org.apache.shiro
+ shiro-core
+ 1.3.2
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.42
+
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.7.0
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework
+ spring-context-support
+
com.bootdo
clouddo-common
0.0.1-SNAPSHOT
-
- org.springframework.boot
- spring-boot-starter-security
-
-
-
- net.sf.ehcache
- ehcache
-
-
-
-
- org.mapstruct
- mapstruct-jdk8
- ${org.mapstruct.version}
-
-
- org.mapstruct
- mapstruct
- ${org.mapstruct.version}
-
-
- org.mapstruct
- mapstruct-processor
- ${org.mapstruct.version}
- provided
-
+
+
+
+
+
+ net.sf.ehcache
+ ehcache
+
+
+
+
+ org.mapstruct
+ mapstruct-jdk8
+ ${org.mapstruct.version}
+
+
+ org.mapstruct
+ mapstruct
+ ${org.mapstruct.version}
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${org.mapstruct.version}
+ provided
+
+
+ org.springframework.cloud
+ spring-cloud-starter-security
+
+
+ org.springframework.cloud
+ spring-cloud-starter-oauth2
+
+
+ org.springframework.boot
+ spring-boot-starter-redis
+
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.6.1
-
- 1.8
- 1.8
-
-
- org.mapstruct
- mapstruct-processor
- ${org.mapstruct.version}
-
-
-
-
-
-
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.6.1
+
+ 1.8
+ 1.8
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${org.mapstruct.version}
+
+
+
+
+
+
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/AuthConfig.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/AuthConfig.java
index 0e14b9a..c9335c1 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/AuthConfig.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/AuthConfig.java
@@ -9,21 +9,21 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
@Configuration
public class AuthConfig extends WebMvcConfigurerAdapter {
- @Bean
- public AuthIntercepter authIntercepter() {
- return new AuthIntercepter();
- }
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- InterceptorRegistration addInterceptor = registry.addInterceptor(authIntercepter());
-
- // 排除配置
- addInterceptor.excludePathPatterns("/error");
- addInterceptor.excludePathPatterns("/login**");
- addInterceptor.excludePathPatterns("/test**");
-
- // 拦截配置
- addInterceptor.addPathPatterns("/**");
- }
+// @Bean
+// public AuthIntercepter authIntercepter() {
+// return new AuthIntercepter();
+// }
+//
+// @Override
+// public void addInterceptors(InterceptorRegistry registry) {
+// InterceptorRegistration addInterceptor = registry.addInterceptor(authIntercepter());
+//
+// // 排除配置
+// addInterceptor.excludePathPatterns("/error");
+// addInterceptor.excludePathPatterns("/login**");
+// addInterceptor.excludePathPatterns("/test**");
+//
+// // 拦截配置
+// addInterceptor.addPathPatterns("/**");
+// }
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/Oauth2ServiceConfig.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/Oauth2ServiceConfig.java
new file mode 100644
index 0000000..953f5be
--- /dev/null
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/Oauth2ServiceConfig.java
@@ -0,0 +1,64 @@
+package com.bootdo.clouddoadmin.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
+import org.springframework.security.oauth2.provider.token.store.JdbcTokenStore;
+import org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore;
+
+import javax.sql.DataSource;
+
+/**
+ * @author bootdo
+ */
+@Configuration
+@EnableAuthorizationServer
+public class Oauth2ServiceConfig extends AuthorizationServerConfigurerAdapter {
+ @Autowired
+ AuthenticationManager authenticationManager;
+
+ @Autowired
+ DataSource dataSource;
+ @Override
+ public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
+ clients.inMemory()
+ .withClient("app")
+ .scopes("app")
+ .authorizedGrantTypes("password","authorization_code", "refresh_token")
+ .secret(new BCryptPasswordEncoder().encode("123456"));
+ }
+
+ @Override
+ public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
+ endpoints.authenticationManager(authenticationManager);
+ endpoints.tokenStore(jdbcTokenStore());
+ }
+
+ JdbcTokenStore jdbcTokenStore(){
+ return new JdbcTokenStore(dataSource);
+ }
+
+// @Bean
+// RedisTokenStore redisTokenStore(){
+// return new RedisTokenStore(connectionFactory);
+// }
+
+ @Override
+ public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
+ security
+ // 开启/oauth/token_key验证端口无权限访问
+ .tokenKeyAccess("permitAll()")
+ // 开启/oauth/check_token验证端口认证权限访问
+ .checkTokenAccess("isAuthenticated()")
+ .allowFormAuthenticationForClients();
+ }
+
+
+}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/ResourceServerConfig.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/ResourceServerConfig.java
new file mode 100644
index 0000000..c5efcad
--- /dev/null
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/ResourceServerConfig.java
@@ -0,0 +1,26 @@
+package com.bootdo.clouddoadmin.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+
+import javax.servlet.http.HttpServletResponse;
+
+@Configuration
+@EnableResourceServer
+public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+
+ @Override
+ public void configure(HttpSecurity http) throws Exception {
+ http
+ .csrf().disable()
+ .exceptionHandling()
+ .authenticationEntryPoint((request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED))
+ .and()
+ .authorizeRequests()
+ .anyRequest().authenticated()
+ .and()
+ .httpBasic();
+ }
+}
\ No newline at end of file
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java
new file mode 100644
index 0000000..2e2115c
--- /dev/null
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java
@@ -0,0 +1,45 @@
+package com.bootdo.clouddoadmin.config;
+
+
+import com.bootdo.clouddoadmin.service.impl.UserDetailImpl;
+import com.bootdo.clouddoadmin.service.impl.UserServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.BeanIds;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+@EnableWebSecurity
+public class SecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
+
+ @Autowired
+ UserDetailImpl userDetail;
+
+ @Bean(name = BeanIds.AUTHENTICATION_MANAGER)
+ @Override
+ public AuthenticationManager authenticationManagerBean() throws Exception {
+ return super.authenticationManagerBean();
+ }
+
+
+ @Override
+ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ auth
+ .userDetailsService(userDetail)
+ .passwordEncoder(passwordEncoder());
+
+ }
+
+
+ @Bean
+ PasswordEncoder passwordEncoder(){
+ return new BCryptPasswordEncoder();
+ }
+}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java
index 31380ce..09fa806 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java
@@ -22,6 +22,7 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import java.security.Principal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -125,4 +126,9 @@ public class UserController extends BaseController {
// 存在,不通过,false
return !userService.exits(params);
}
+
+ @GetMapping("/tokenUser")
+ public Principal user(Principal user){
+ return user;
+ }
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
new file mode 100644
index 0000000..dba3857
--- /dev/null
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
@@ -0,0 +1,23 @@
+package com.bootdo.clouddoadmin.service.impl;
+
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Component;
+
+import java.util.HashSet;
+
+/**
+ * @author bootdo
+ */
+@Component
+public class UserDetailsServiceImpl implements UserDetailsService {
+ @Override
+ public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
+
+ return new User("a",new BCryptPasswordEncoder().encode("b"),new HashSet<>());
+ }
+
+}
diff --git a/clouddo-base/pom.xml b/clouddo-base/pom.xml
index 6990c63..4dba6ed 100644
--- a/clouddo-base/pom.xml
+++ b/clouddo-base/pom.xml
@@ -63,6 +63,11 @@
clouddo-common
0.0.1-SNAPSHOT
+
+
+ org.springframework.cloud
+ spring-cloud-starter-oauth2
+
diff --git a/clouddo-base/src/main/java/com/bootdo/clouddobase/ClouddoBaseApplication.java b/clouddo-base/src/main/java/com/bootdo/clouddobase/ClouddoBaseApplication.java
index 2595ae7..3ec410b 100644
--- a/clouddo-base/src/main/java/com/bootdo/clouddobase/ClouddoBaseApplication.java
+++ b/clouddo-base/src/main/java/com/bootdo/clouddobase/ClouddoBaseApplication.java
@@ -3,7 +3,14 @@ package com.bootdo.clouddobase;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+/**
+ * @author bootdo
+ */
+@EnableOAuth2Sso
+@EnableGlobalMethodSecurity(prePostEnabled = true)
@MapperScan(basePackages = {"com.bootdo.*.dao"})
@SpringBootApplication
public class ClouddoBaseApplication {
diff --git a/clouddo-base/src/main/java/com/bootdo/clouddobase/config/ResourceServerConfig.java b/clouddo-base/src/main/java/com/bootdo/clouddobase/config/ResourceServerConfig.java
new file mode 100644
index 0000000..fcdeab7
--- /dev/null
+++ b/clouddo-base/src/main/java/com/bootdo/clouddobase/config/ResourceServerConfig.java
@@ -0,0 +1,38 @@
+package com.bootdo.clouddobase.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+import org.springframework.web.context.request.RequestContextListener;
+
+import javax.servlet.http.HttpServletResponse;
+
+@Configuration
+@EnableResourceServer
+public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+
+ @Override
+ public void configure(HttpSecurity http) throws Exception {
+ http
+ .csrf().disable()
+ .antMatcher("/**")
+ .exceptionHandling()
+ .authenticationEntryPoint((request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED))
+ .and()
+ .authorizeRequests()
+ .anyRequest().authenticated()
+ .and()
+ .httpBasic();
+ }
+
+ @Bean
+ @Order(0)
+ public RequestContextListener requestContextListener() {
+ return new RequestContextListener();
+ }
+
+
+}
\ No newline at end of file
diff --git a/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/LogController.java b/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/LogController.java
index 71762af..555217d 100644
--- a/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/LogController.java
+++ b/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/LogController.java
@@ -50,4 +50,6 @@ public class LogController {
}
return R.error();
}
+
+
}
diff --git a/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/UserController.java b/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/UserController.java
new file mode 100644
index 0000000..5843546
--- /dev/null
+++ b/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/UserController.java
@@ -0,0 +1,19 @@
+package com.bootdo.clouddobase.controller;
+
+import org.aspectj.weaver.ast.HasAnnotation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.security.Principal;
+
+@RestController
+@RequestMapping
+public class UserController {
+ @GetMapping("user")
+ @PreAuthorize("hasAuthority('query-demo')")
+ public Principal user(Principal user){
+ return user;
+ }
+}
diff --git a/clouddo-base/src/main/resources/application.yml b/clouddo-base/src/main/resources/application.yml
index 4cedf53..f373aed 100644
--- a/clouddo-base/src/main/resources/application.yml
+++ b/clouddo-base/src/main/resources/application.yml
@@ -12,4 +12,14 @@ spring:
mybatis:
mapper-locations: mapper/**Mapper.xml
configuration:
- map-underscore-to-camel-case: true
\ No newline at end of file
+ map-underscore-to-camel-case: true
+security:
+ oauth2:
+ client:
+ access-token-uri: http://localhost:8005/oauth/token
+ user-authorization-uri: http://localhost:8005/oauth/authorize
+ client-id: app
+ clientAuthenticationScheme: form
+ resource:
+ user-info-uri: http://localhost:8005/user/tokenUser
+ prefer-token-info: false
\ No newline at end of file
diff --git a/clouddo-common/pom.xml b/clouddo-common/pom.xml
index ec6e2cc..09b3de3 100644
--- a/clouddo-common/pom.xml
+++ b/clouddo-common/pom.xml
@@ -81,6 +81,11 @@
RELEASE
+
+ org.springframework.cloud
+ spring-cloud-starter-oauth2
+
+
@@ -96,13 +101,13 @@
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/clouddo-common/src/main/java/com/bootdo/clouddocommon/intercepter/OAuth2FeignRequestInterceptor.java b/clouddo-common/src/main/java/com/bootdo/clouddocommon/intercepter/OAuth2FeignRequestInterceptor.java
new file mode 100644
index 0000000..ccaf0a7
--- /dev/null
+++ b/clouddo-common/src/main/java/com/bootdo/clouddocommon/intercepter/OAuth2FeignRequestInterceptor.java
@@ -0,0 +1,35 @@
+//package com.bootdo.clouddocommon.intercepter;
+//
+//import feign.RequestInterceptor;
+//import feign.RequestTemplate;
+//import org.springframework.security.oauth2.client.OAuth2RestTemplate;
+//
+//public class OAuth2FeignRequestInterceptor implements RequestInterceptor {
+//
+// private static final String AUTHORIZATION_HEADER = "Authorization";
+//
+// private static final String BEARER_TOKEN_TYPE = "bearer";
+//
+// private final OAuth2RestTemplate oAuth2RestTemplate;
+//
+//
+// /**
+// * Instantiates a new O auth 2 feign request interceptor.
+// *
+// * @param oAuth2RestTemplate the o auth 2 rest template
+// */
+// OAuth2FeignRequestInterceptor(OAuth2RestTemplate oAuth2RestTemplate) {
+// this.oAuth2RestTemplate = oAuth2RestTemplate;
+// }
+//
+// /**
+// * Apply.
+// *
+// * @param template the template
+// */
+// @Override
+// public void apply(RequestTemplate template) {
+// template.header(AUTHORIZATION_HEADER, String.format("%s %s", BEARER_TOKEN_TYPE, oAuth2RestTemplate.getAccessToken().toString()));
+//
+// }
+//}
\ No newline at end of file
diff --git a/clouddo-zuul/pom.xml b/clouddo-zuul/pom.xml
index 15f25a5..6780ed3 100644
--- a/clouddo-zuul/pom.xml
+++ b/clouddo-zuul/pom.xml
@@ -25,6 +25,7 @@
Finchley.SR1
+
org.springframework.cloud
@@ -40,6 +41,12 @@
spring-cloud-starter-openfeign
+
+
+
+
+
+
io.jsonwebtoken
jjwt
diff --git a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/ClouddoZuulApplication.java b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/ClouddoZuulApplication.java
index 9fb8901..8fe1a37 100644
--- a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/ClouddoZuulApplication.java
+++ b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/ClouddoZuulApplication.java
@@ -11,6 +11,7 @@ import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
+//@EnableOAuth2Sso
@EnableFeignClients
@EnableZuulProxy
@EnableEurekaClient
diff --git a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java
index 1ddf169..383b4d7 100644
--- a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java
+++ b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java
@@ -52,30 +52,30 @@ public class AccessFilter extends ZuulFilter {
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
- HttpServletRequest request = ctx.getRequest();
- final String requestUri = request.getRequestURI();
- if (isStartWith(requestUri)) {
- return null;
- }
- String accessToken = request.getHeader(CommonConstants.CONTEXT_TOKEN);
- if(null == accessToken || accessToken == ""){
- accessToken = request.getParameter(CommonConstants.TOKEN);
- }
- if (null == accessToken) {
- setFailedRequest(R.error401(), 200);
- return null;
- }
- try {
- UserToken userToken = JwtUtils.getInfoFromToken(accessToken);
- } catch (Exception e) {
- setFailedRequest(R.error401(), 200);
- return null;
- }
- FilterContextHandler.setToken(accessToken);
- if(!havePermission(request)){
- setFailedRequest(R.error403(), 200);
- return null;
- }
+// HttpServletRequest request = ctx.getRequest();
+// final String requestUri = request.getRequestURI();
+// if (isStartWith(requestUri)) {
+// return null;
+// }
+// String accessToken = request.getHeader(CommonConstants.CONTEXT_TOKEN);
+// if(null == accessToken || accessToken == ""){
+// accessToken = request.getParameter(CommonConstants.TOKEN);
+// }
+// if (null == accessToken) {
+// setFailedRequest(R.error401(), 200);
+// return null;
+// }
+// try {
+// UserToken userToken = JwtUtils.getInfoFromToken(accessToken);
+// } catch (Exception e) {
+// setFailedRequest(R.error401(), 200);
+// return null;
+// }
+// FilterContextHandler.setToken(accessToken);
+// if(!havePermission(request)){
+// setFailedRequest(R.error403(), 200);
+// return null;
+// }
Set headers = (Set) ctx.get("ignoredHeaders");
//We need our JWT tokens relayed to resource servers
//添加自己header
diff --git a/clouddo-zuul/src/main/resources/application.yml b/clouddo-zuul/src/main/resources/application.yml
index 0fc5810..e72dc6c 100644
--- a/clouddo-zuul/src/main/resources/application.yml
+++ b/clouddo-zuul/src/main/resources/application.yml
@@ -14,6 +14,15 @@ spring:
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
+security:
+ oauth2:
+ client:
+ access-token-uri: http://localhost:8005/oauth/token
+ user-authorization-uri: http://localhost:8005/oauth/authorize
+ client-id: app
+ resource:
+ user-info-uri: http://localhost:8005/user
+ prefer-token-info: false
--
Gitee
From 98d4c8eb526b3555e1170535040a2c56f4be27aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E6=98=A5=E5=85=89?= <1992lcg@163.com>
Date: Thu, 17 Jan 2019 17:16:05 +0800
Subject: [PATCH 02/11] =?UTF-8?q?oauth2=E9=89=B4=E6=9D=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java
index 2e2115c..433a80a 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/SecurityConfigurerAdapter.java
@@ -1,7 +1,6 @@
package com.bootdo.clouddoadmin.config;
-import com.bootdo.clouddoadmin.service.impl.UserDetailImpl;
import com.bootdo.clouddoadmin.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
@@ -20,7 +19,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
public class SecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Autowired
- UserDetailImpl userDetail;
+ UserDetailsService userDetail;
@Bean(name = BeanIds.AUTHENTICATION_MANAGER)
@Override
--
Gitee
From 941770479907f56002e5e0ab05d3a69ef207d72d Mon Sep 17 00:00:00 2001
From: lcg0124 <1992lcg@163.com>
Date: Tue, 29 Jan 2019 17:46:37 +0800
Subject: [PATCH 03/11] gitignore
---
.gitignore | 1 -
1 file changed, 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 697ec7d..3e9140c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,3 @@
-
/.idea/
/clouddo.iml
/clouddo-*/clouddo-*.iml
--
Gitee
From b8a1c7548cd613d81b7b37798f3f7df377b4adea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E6=98=A5=E5=85=89?= <1992lcg@163.com>
Date: Wed, 20 Feb 2019 14:51:44 +0800
Subject: [PATCH 04/11] =?UTF-8?q?=E5=AE=8C=E5=96=84oauth2=E9=89=B4?=
=?UTF-8?q?=E6=9D=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/MenuController.java | 58 +++++++++++--------
.../clouddoadmin/secuity/CurrentUser.java | 23 ++++++++
.../service/impl/UserDetailsServiceImpl.java | 22 +++++--
.../clouddoadmin/utils/SecuityUtils.java | 13 +++++
4 files changed, 88 insertions(+), 28 deletions(-)
create mode 100644 clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java
create mode 100644 clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/SecuityUtils.java
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/MenuController.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/MenuController.java
index 1dcab5d..2e319c3 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/MenuController.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/MenuController.java
@@ -3,6 +3,7 @@ package com.bootdo.clouddoadmin.controller;
import com.bootdo.clouddoadmin.domain.MenuDO;
import com.bootdo.clouddoadmin.domain.Tree;
import com.bootdo.clouddoadmin.service.MenuService;
+import com.bootdo.clouddoadmin.utils.SecuityUtils;
import com.bootdo.clouddocommon.annotation.Log;
import com.bootdo.clouddocommon.context.FilterContextHandler;
import com.bootdo.clouddocommon.dto.MenuDTO;
@@ -24,13 +25,20 @@ public class MenuController {
@Autowired
MenuService menuService;
+ @Log("获取当前用户的菜单")
+ @GetMapping("currentUserMenus")
+ R currentUserMenus() {
+ return R.ok().put("currentUserMenus",menuService.RouterDTOsByUserId(SecuityUtils.getCurrentUser().getId()));
+ }
+
@Log("访问菜单")
@GetMapping("tree")
- Tree tree(){
+ Tree tree() {
return menuService.getTree();
}
+
@GetMapping
- List> list(){
+ List> list() {
return menuService.getTree().getChildren();
}
@@ -47,30 +55,31 @@ public class MenuController {
}
@PutMapping()
- R update(@RequestBody MenuDO menuDO){
- if(menuService.update(menuDO)>0){
+ R update(@RequestBody MenuDO menuDO) {
+ if (menuService.update(menuDO) > 0) {
return R.ok();
}
- return R.error();
+ return R.error();
}
+
@PostMapping
- R save(@RequestBody MenuDO menuDO){
- return R.operate(menuService.save(menuDO)>0);
+ R save(@RequestBody MenuDO menuDO) {
+ return R.operate(menuService.save(menuDO) > 0);
}
@DeleteMapping()
- R remove(Long id){
- if(menuService.remove(id)>0){
+ R remove(Long id) {
+ if (menuService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
@GetMapping("userMenus")
- List userMenus(){
+ List userMenus() {
List menuDOS = menuService.userMenus(Long.parseLong(FilterContextHandler.getUserID()));
List menuDTOS = new ArrayList<>();
- for (MenuDO menuDO:menuDOS){
+ for (MenuDO menuDO : menuDOS) {
MenuDTO menuDTO = new MenuDTO();
menuDTO.setMenuId(menuDO.getMenuId());
menuDTO.setUrl(menuDO.getUrl());
@@ -81,26 +90,27 @@ public class MenuController {
}
@GetMapping("clearCache")
- R clearCache(){
+ R clearCache() {
Boolean flag = menuService.clearCache(Long.parseLong(FilterContextHandler.getUserID()));
- if (flag){
- return R.ok();
+ if (flag) {
+ return R.ok();
}
return R.error();
}
- /**
- * 当前用户菜单的树形结构
- * @return
- */
- @RequestMapping("/currentUserMenus")
- List> currentUserMenus() {
- List> menus = menuService.listMenuTree(Long.parseLong(FilterContextHandler.getUserID()));
- return menus;
- }
+// /**
+// * 当前用户菜单的树形结构
+// *
+// * @return
+// */
+// @RequestMapping("/currentUserMenus")
+// List> currentUserMenus() {
+// List> menus = menuService.listMenuTree(Long.parseLong(FilterContextHandler.getUserID()));
+// return menus;
+// }
@GetMapping("/roleId")
- List menuIdsByRoleId(Long roleId){
+ List menuIdsByRoleId(Long roleId) {
return menuService.MenuIdsByRoleId(roleId);
}
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java
new file mode 100644
index 0000000..b9feeee
--- /dev/null
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java
@@ -0,0 +1,23 @@
+package com.bootdo.clouddoadmin.secuity;
+
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+
+import java.util.Collection;
+
+public class CurrentUser extends User {
+ public CurrentUser(String username, String password, Long id, Collection extends GrantedAuthority> authorities) {
+ super(username, password, authorities);
+ setId(id);
+ }
+
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
index dba3857..ce2bf9e 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
@@ -1,5 +1,10 @@
package com.bootdo.clouddoadmin.service.impl;
+import com.bootdo.clouddoadmin.dao.UserDao;
+import com.bootdo.clouddoadmin.domain.UserDO;
+import com.bootdo.clouddoadmin.secuity.CurrentUser;
+import com.bootdo.clouddocommon.exception.CDException;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -7,17 +12,26 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
/**
* @author bootdo
*/
@Component
public class UserDetailsServiceImpl implements UserDetailsService {
- @Override
- public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
+ @Autowired
+ UserDao userDao;
- return new User("a",new BCryptPasswordEncoder().encode("b"),new HashSet<>());
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ List userDOS = userDao.list(new HashMap() {{
+ put("username", username);
+ }});
+ if (userDOS.size() < 1) {
+ throw new CDException("用户名或密码错误!");
+ }
+ return new CurrentUser(username, userDOS.get(0).getPassword(), userDOS.get(0).getUserId(), new HashSet<>());
}
-
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/SecuityUtils.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/SecuityUtils.java
new file mode 100644
index 0000000..7bb01c8
--- /dev/null
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/SecuityUtils.java
@@ -0,0 +1,13 @@
+package com.bootdo.clouddoadmin.utils;
+
+import com.bootdo.clouddoadmin.secuity.CurrentUser;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
+
+public class SecuityUtils {
+ public static CurrentUser getCurrentUser() {
+ return (CurrentUser) SecurityContextHolder.getContext()
+ .getAuthentication()
+ .getPrincipal();
+ }
+}
--
Gitee
From f6eab449d02e69eb5ea251bdac8837475de2f919 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E6=98=A5=E5=85=89?= <1992lcg@163.com>
Date: Wed, 20 Feb 2019 15:57:20 +0800
Subject: [PATCH 05/11] =?UTF-8?q?=E5=AE=8C=E5=96=84oauth2=E9=89=B4?=
=?UTF-8?q?=E6=9D=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../clouddocommon/exception/CDException.java | 10 ++++
clouddo-zuul/pom.xml | 10 ++--
.../controller/LoginController.java | 50 +++++++++----------
.../clouddozuul/filter/AccessFilter.java | 46 -----------------
.../clouddozuul/prc/admin/MenuService.java | 32 ++++++------
.../ClouddoZuulApplicationTests.java | 42 ++++++++--------
6 files changed, 76 insertions(+), 114 deletions(-)
create mode 100644 clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CDException.java
diff --git a/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CDException.java b/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CDException.java
new file mode 100644
index 0000000..3eeefd6
--- /dev/null
+++ b/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CDException.java
@@ -0,0 +1,10 @@
+package com.bootdo.clouddocommon.exception;
+
+/**
+ * @author bootdo
+ */
+public class CDException extends RuntimeException {
+ public CDException(String message) {
+ super(message);
+ }
+}
diff --git a/clouddo-zuul/pom.xml b/clouddo-zuul/pom.xml
index 6780ed3..88ca065 100644
--- a/clouddo-zuul/pom.xml
+++ b/clouddo-zuul/pom.xml
@@ -58,11 +58,11 @@
spring-boot-starter-test
test
-
- com.bootdo
- clouddo-common
- 0.0.1-SNAPSHOT
-
+
+
+
+
+
org.springframework.cloud
diff --git a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/controller/LoginController.java b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/controller/LoginController.java
index acde117..a0b2e6e 100644
--- a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/controller/LoginController.java
+++ b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/controller/LoginController.java
@@ -1,26 +1,24 @@
-package com.bootdo.clouddozuul.controller;
-
-import com.bootdo.clouddocommon.constants.CommonConstants;
-import com.bootdo.clouddocommon.context.FilterContextHandler;
-import com.bootdo.clouddocommon.dto.MenuDTO;
-import com.bootdo.clouddozuul.prc.admin.MenuService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * @version V1.0
- */
-@RestController
-public class LoginController {
- @Autowired
- MenuService menuService;
- @GetMapping({"/test"})
- List login(HttpServletRequest request) {
- FilterContextHandler.setToken(request.getHeader(CommonConstants.CONTEXT_TOKEN));
- return menuService.userMenus();
- }
-}
+//package com.bootdo.clouddozuul.controller;
+//
+//
+//import com.netflix.discovery.CommonConstants;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import java.util.List;
+//
+///**
+// * @version V1.0
+// */
+//@RestController
+//public class LoginController {
+// @Autowired
+// MenuService menuService;
+// @GetMapping({"/test"})
+// List login(HttpServletRequest request) {
+// FilterContextHandler.setToken(request.getHeader(CommonConstants.CONTEXT_TOKEN));
+// return menuService.userMenus();
+// }
+//}
diff --git a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java
index 383b4d7..766562c 100644
--- a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java
+++ b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/filter/AccessFilter.java
@@ -1,14 +1,5 @@
package com.bootdo.clouddozuul.filter;
-import com.bootdo.clouddocommon.constants.CommonConstants;
-import com.bootdo.clouddocommon.context.FilterContextHandler;
-import com.bootdo.clouddocommon.dto.MenuDTO;
-import com.bootdo.clouddocommon.dto.UserToken;
-import com.bootdo.clouddocommon.utils.JSONUtils;
-import com.bootdo.clouddocommon.utils.JwtUtils;
-import com.bootdo.clouddocommon.utils.R;
-import com.bootdo.clouddocommon.utils.StringUtils;
-import com.bootdo.clouddozuul.prc.admin.MenuService;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,8 +18,6 @@ import java.util.Set;
* @Author bootdo 1992lcg@163.com
*/
public class AccessFilter extends ZuulFilter {
- @Autowired
- MenuService menuService;
private String ignorePath = "/api-admin/login";
@@ -90,40 +79,5 @@ public class AccessFilter extends ZuulFilter {
// return null;
}
- private void setFailedRequest(Object body, int code) {
- RequestContext ctx = RequestContext.getCurrentContext();
- ctx.setResponseStatusCode(code);
- HttpServletResponse response = ctx.getResponse();
- PrintWriter out = null;
- try{
- out = response.getWriter();
- out.write(JSONUtils.beanToJson(body));
- out.flush();
- }catch(IOException e){
- e.printStackTrace();
- }
- ctx.setSendZuulResponse(false);
- }
-
- private boolean havePermission(HttpServletRequest request){
- String currentURL = request.getRequestURI();
- List menuDTOS = menuService.userMenus();
- for(MenuDTO menuDTO:menuDTOS){
- if(currentURL!=null&&null!=menuDTO.getUrl()&¤tURL.startsWith(menuDTO.getUrl())){
- return true;
- }
- }
- return false;
- }
-
- private boolean isStartWith(String requestUri) {
- boolean flag = false;
- for (String s : ignorePath.split(",")) {
- if (requestUri.startsWith(s)) {
- return true;
- }
- }
- return flag;
- }
}
diff --git a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/prc/admin/MenuService.java b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/prc/admin/MenuService.java
index 9937ca4..1b45b42 100644
--- a/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/prc/admin/MenuService.java
+++ b/clouddo-zuul/src/main/java/com/bootdo/clouddozuul/prc/admin/MenuService.java
@@ -1,16 +1,16 @@
-package com.bootdo.clouddozuul.prc.admin;
-
-import com.bootdo.clouddocommon.dto.MenuDTO;
-import com.bootdo.clouddocommon.intercepter.FeignIntercepter;
-import feign.Headers;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-
-import java.util.List;
-
-@Headers("Content-Type:application/json")
-@FeignClient(name = "api-admin", configuration = FeignIntercepter.class)
-public interface MenuService {
- @GetMapping("/menu/userMenus")
- List userMenus();
-}
+//package com.bootdo.clouddozuul.prc.admin;
+//
+//import com.bootdo.clouddocommon.dto.MenuDTO;
+//import com.bootdo.clouddocommon.intercepter.FeignIntercepter;
+//import feign.Headers;
+//import org.springframework.cloud.openfeign.FeignClient;
+//import org.springframework.web.bind.annotation.GetMapping;
+//
+//import java.util.List;
+//
+//@Headers("Content-Type:application/json")
+//@FeignClient(name = "api-admin", configuration = FeignIntercepter.class)
+//public interface MenuService {
+// @GetMapping("/menu/userMenus")
+// List userMenus();
+//}
diff --git a/clouddo-zuul/src/test/java/com/bootdo/clouddozuul/ClouddoZuulApplicationTests.java b/clouddo-zuul/src/test/java/com/bootdo/clouddozuul/ClouddoZuulApplicationTests.java
index 4128322..b1693ca 100644
--- a/clouddo-zuul/src/test/java/com/bootdo/clouddozuul/ClouddoZuulApplicationTests.java
+++ b/clouddo-zuul/src/test/java/com/bootdo/clouddozuul/ClouddoZuulApplicationTests.java
@@ -1,21 +1,21 @@
-package com.bootdo.clouddozuul;
-
-import com.bootdo.clouddozuul.prc.admin.MenuService;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class ClouddoZuulApplicationTests {
- @Autowired
- MenuService menuService;
-
- @Test
- public void contextLoads() {
- menuService.userMenus();
- }
-
-}
+//package com.bootdo.clouddozuul;
+//
+//import com.bootdo.clouddozuul.prc.admin.MenuService;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.test.context.junit4.SpringRunner;
+//
+//@RunWith(SpringRunner.class)
+//@SpringBootTest
+//public class ClouddoZuulApplicationTests {
+// @Autowired
+// MenuService menuService;
+//
+// @Test
+// public void contextLoads() {
+// menuService.userMenus();
+// }
+//
+//}
--
Gitee
From 64129763d1533a47342b4b488e1ae41ca7cf23b0 Mon Sep 17 00:00:00 2001
From: itshixun/lichunguang
Date: Mon, 25 Mar 2019 10:26:02 +0800
Subject: [PATCH 06/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF?=
=?UTF-8?q?=E6=97=A5=E5=BF=97=E6=B2=A1=E6=9C=89=E6=89=93=E5=8D=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../clouddocommon/exception/CommonExceptionHandler.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CommonExceptionHandler.java b/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CommonExceptionHandler.java
index a354bb5..76ea4e5 100644
--- a/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CommonExceptionHandler.java
+++ b/clouddo-common/src/main/java/com/bootdo/clouddocommon/exception/CommonExceptionHandler.java
@@ -1,13 +1,18 @@
package com.bootdo.clouddocommon.exception;
import com.bootdo.clouddocommon.utils.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class CommonExceptionHandler {
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
@ExceptionHandler(Exception.class)
R exception(Exception e) {
+ logger.error(e.getMessage(), e);
return R.error(500, e.getMessage());
}
}
--
Gitee
From 2637026cb1251ef27ed7d45ead326ee931ca18c9 Mon Sep 17 00:00:00 2001
From: itshixun/lichunguang
Date: Mon, 25 Mar 2019 10:30:48 +0800
Subject: [PATCH 07/11] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
clouddo-admin/pom.xml | 5 +----
.../bootdo/clouddoadmin/service/impl/MenuServiceImpl.java | 8 +-------
.../clouddoadmin/service/impl/UserDetailsServiceImpl.java | 8 +++++++-
3 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/clouddo-admin/pom.xml b/clouddo-admin/pom.xml
index d407900..05d182e 100644
--- a/clouddo-admin/pom.xml
+++ b/clouddo-admin/pom.xml
@@ -120,10 +120,7 @@
org.springframework.cloud
spring-cloud-starter-oauth2
-
- org.springframework.boot
- spring-boot-starter-redis
-
+
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/MenuServiceImpl.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/MenuServiceImpl.java
index f8388b2..bf82d1d 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/MenuServiceImpl.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/MenuServiceImpl.java
@@ -154,13 +154,7 @@ public class MenuServiceImpl implements MenuService {
@Override
public Set listPerms(Long userId) {
List perms = menuMapper.listUserPerms(userId);
- Set permsSet = new HashSet<>();
- for (String perm : perms) {
- if (StringUtils.isNotBlank(perm)) {
- permsSet.addAll(Arrays.asList(perm.trim().split(",")));
- }
- }
- return permsSet;
+ return new HashSet<>(perms);
}
/**
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
index ce2bf9e..7918467 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
@@ -3,6 +3,7 @@ package com.bootdo.clouddoadmin.service.impl;
import com.bootdo.clouddoadmin.dao.UserDao;
import com.bootdo.clouddoadmin.domain.UserDO;
import com.bootdo.clouddoadmin.secuity.CurrentUser;
+import com.bootdo.clouddoadmin.service.MenuService;
import com.bootdo.clouddocommon.exception.CDException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
@@ -15,6 +16,7 @@ import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Set;
/**
* @author bootdo
@@ -23,6 +25,8 @@ import java.util.List;
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
UserDao userDao;
+ @Autowired
+ MenuService menuService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
@@ -32,6 +36,8 @@ public class UserDetailsServiceImpl implements UserDetailsService {
if (userDOS.size() < 1) {
throw new CDException("用户名或密码错误!");
}
- return new CurrentUser(username, userDOS.get(0).getPassword(), userDOS.get(0).getUserId(), new HashSet<>());
+ UserDO userDO = userDOS.get(0);
+ Set perms = menuService.listPerms(userDO.getUserId());
+ return new CurrentUser(username, userDO.getPassword(), userDO.getUserId(), new HashSet<>());
}
}
--
Gitee
From 3bcf44e81e108245fea0042fae6d14b435ddd946 Mon Sep 17 00:00:00 2001
From: itshixun/lichunguang
Date: Mon, 1 Apr 2019 11:22:31 +0800
Subject: [PATCH 08/11] =?UTF-8?q?oauth2=E5=89=8D=E5=90=8E=E7=AB=AF?=
=?UTF-8?q?=E8=81=94=E8=B0=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
clouddo-admin/clouddo.sql | 138 +++++++++++++++++-
.../controller/LoginController.java | 18 ++-
.../controller/RoleController.java | 2 +
.../service/impl/UserDetailsServiceImpl.java | 13 +-
4 files changed, 155 insertions(+), 16 deletions(-)
diff --git a/clouddo-admin/clouddo.sql b/clouddo-admin/clouddo.sql
index 6d3daf9..f544620 100644
--- a/clouddo-admin/clouddo.sql
+++ b/clouddo-admin/clouddo.sql
@@ -2,19 +2,42 @@
Navicat MySQL Data Transfer
Source Server : localhost
-Source Server Version : 50721
+Source Server Version : 50725
Source Host : localhost:3306
Source Database : clouddo
Target Server Type : MYSQL
-Target Server Version : 50721
+Target Server Version : 50725
File Encoding : 65001
-Date: 2018-05-25 15:34:34
+Date: 2019-03-27 15:56:01
*/
SET FOREIGN_KEY_CHECKS=0;
+-- ----------------------------
+-- Table structure for `clientdetails`
+-- ----------------------------
+DROP TABLE IF EXISTS `clientdetails`;
+CREATE TABLE `clientdetails` (
+ `appId` varchar(128) NOT NULL,
+ `resourceIds` varchar(256) DEFAULT NULL,
+ `appSecret` varchar(256) DEFAULT NULL,
+ `scope` varchar(256) DEFAULT NULL,
+ `grantTypes` varchar(256) DEFAULT NULL,
+ `redirectUrl` varchar(256) DEFAULT NULL,
+ `authorities` varchar(256) DEFAULT NULL,
+ `access_token_validity` int(11) DEFAULT NULL,
+ `refresh_token_validity` int(11) DEFAULT NULL,
+ `additionalInformation` varchar(4096) DEFAULT NULL,
+ `autoApproveScopes` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`appId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of clientdetails
+-- ----------------------------
+
-- ----------------------------
-- Table structure for `cms_file`
-- ----------------------------
@@ -34,6 +57,111 @@ INSERT INTO `cms_file` VALUES ('144', '1', 'http://localhost:8004/files/11/20/9f
INSERT INTO `cms_file` VALUES ('145', '1', 'http://localhost:8004/files/45/44/26f1385f-c227-482a-84ad-4d97ee25ef0d', '2018-05-25 15:20:29');
INSERT INTO `cms_file` VALUES ('146', '1', 'http://localhost:8004/files/99/45/c8ea7174-1ebb-4c7c-864d-8a1defa57ff8', '2018-05-25 15:21:16');
+-- ----------------------------
+-- Table structure for `oauth_access_token`
+-- ----------------------------
+DROP TABLE IF EXISTS `oauth_access_token`;
+CREATE TABLE `oauth_access_token` (
+ `token_id` varchar(256) DEFAULT NULL,
+ `token` blob,
+ `authentication_id` varchar(128) NOT NULL,
+ `user_name` varchar(256) DEFAULT NULL,
+ `client_id` varchar(256) DEFAULT NULL,
+ `authentication` blob,
+ `refresh_token` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`authentication_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of oauth_access_token
+-- ----------------------------
+INSERT INTO `oauth_access_token` VALUES ('d659bad9c980a1af0025e06271c6e063', 0xACED0005737200436F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F4175746832416363657373546F6B656E0CB29E361B24FACE0200064C00156164646974696F6E616C496E666F726D6174696F6E74000F4C6A6176612F7574696C2F4D61703B4C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B4C000C72656672657368546F6B656E74003F4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F636F6D6D6F6E2F4F417574683252656672657368546F6B656E3B4C000573636F706574000F4C6A6176612F7574696C2F5365743B4C0009746F6B656E547970657400124C6A6176612F6C616E672F537472696E673B4C000576616C756571007E000578707372001E6A6176612E7574696C2E436F6C6C656374696F6E7324456D7074794D6170593614855ADCE7D002000078707372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000169C0B8501C787372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E71007E0002787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C756571007E0005787074002465616562333335342D633833302D346331662D623132632D6262613264643337366230617371007E000977080000016A58A3EA1878737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C0001637400164C6A6176612F7574696C2F436F6C6C656374696F6E3B7870737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017400036170707874000662656172657274002465323234633531322D303839392D343638382D393736622D313734363061643032346637, 'b9cdd625a781099755dfb47c3de1e150', 'admin', 'app', 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A657870000000007704000000007871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B72656469726563745572697400124C6A6176612F6C616E672F537472696E673B4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E0011787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000F4C001172657175657374506172616D657465727371007E000E4C000573636F706571007E00117870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E000E7870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E001478017371007E0022770C000000103F40000000000000787371007E00173F40000000000000770800000010000000007870707371007E0022770C000000103F40000000000000787371007E0022770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B000000007704000000007871007E002B737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00173F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E001971007E001A71007E001B71007E001C71007E001D71007E001E7800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572A0F6D8499537099B0200014C000269647400104C6A6176612F6C616E672F4C6F6E673B787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E00114C000870617373776F726471007E000F4C0008757365726E616D6571007E000F7870010101017371007E001F737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F40200007870770400000000787071007E001E7372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000001, '47023366984f5c1fce7e9453bc0c7113');
+
+-- ----------------------------
+-- Table structure for `oauth_approvals`
+-- ----------------------------
+DROP TABLE IF EXISTS `oauth_approvals`;
+CREATE TABLE `oauth_approvals` (
+ `userId` varchar(256) DEFAULT NULL,
+ `clientId` varchar(256) DEFAULT NULL,
+ `scope` varchar(256) DEFAULT NULL,
+ `status` varchar(10) DEFAULT NULL,
+ `expiresAt` datetime DEFAULT NULL,
+ `lastModifiedAt` datetime DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of oauth_approvals
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for `oauth_client_details`
+-- ----------------------------
+DROP TABLE IF EXISTS `oauth_client_details`;
+CREATE TABLE `oauth_client_details` (
+ `client_id` varchar(128) NOT NULL,
+ `resource_ids` varchar(256) DEFAULT NULL,
+ `client_secret` varchar(256) DEFAULT NULL,
+ `scope` varchar(256) DEFAULT NULL,
+ `authorized_grant_types` varchar(256) DEFAULT NULL,
+ `web_server_redirect_uri` varchar(256) DEFAULT NULL,
+ `authorities` varchar(256) DEFAULT NULL,
+ `access_token_validity` int(11) DEFAULT NULL,
+ `refresh_token_validity` int(11) DEFAULT NULL,
+ `additional_information` varchar(4096) DEFAULT NULL,
+ `autoapprove` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`client_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of oauth_client_details
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for `oauth_client_token`
+-- ----------------------------
+DROP TABLE IF EXISTS `oauth_client_token`;
+CREATE TABLE `oauth_client_token` (
+ `token_id` varchar(256) DEFAULT NULL,
+ `token` blob,
+ `authentication_id` varchar(128) NOT NULL,
+ `user_name` varchar(256) DEFAULT NULL,
+ `client_id` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`authentication_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of oauth_client_token
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for `oauth_code`
+-- ----------------------------
+DROP TABLE IF EXISTS `oauth_code`;
+CREATE TABLE `oauth_code` (
+ `code` varchar(256) DEFAULT NULL,
+ `authentication` blob
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of oauth_code
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for `oauth_refresh_token`
+-- ----------------------------
+DROP TABLE IF EXISTS `oauth_refresh_token`;
+CREATE TABLE `oauth_refresh_token` (
+ `token_id` varchar(256) DEFAULT NULL,
+ `token` blob,
+ `authentication` blob
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of oauth_refresh_token
+-- ----------------------------
+INSERT INTO `oauth_refresh_token` VALUES ('47023366984f5c1fce7e9453bc0c7113', 0xACED00057372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C75657400124C6A6176612F6C616E672F537472696E673B787074002465616562333335342D633833302D346331662D623132632D6262613264643337366230617372000E6A6176612E7574696C2E44617465686A81014B597419030000787077080000016A58A3EA1878, 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A657870000000007704000000007871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B72656469726563745572697400124C6A6176612F6C616E672F537472696E673B4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E0011787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000F4C001172657175657374506172616D657465727371007E000E4C000573636F706571007E00117870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E000E7870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E001478017371007E0022770C000000103F40000000000000787371007E00173F40000000000000770800000010000000007870707371007E0022770C000000103F40000000000000787371007E0022770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B000000007704000000007871007E002B737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00173F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E001971007E001A71007E001B71007E001C71007E001D71007E001E7800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572A0F6D8499537099B0200014C000269647400104C6A6176612F6C616E672F4C6F6E673B787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E00114C000870617373776F726471007E000F4C0008757365726E616D6571007E000F7870010101017371007E001F737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F40200007870770400000000787071007E001E7372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000001);
+
-- ----------------------------
-- Table structure for `sys_dept`
-- ----------------------------
@@ -581,7 +709,7 @@ CREATE TABLE `sys_user` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL COMMENT '用户名',
`name` varchar(100) DEFAULT NULL,
- `password` varchar(50) DEFAULT NULL COMMENT '密码',
+ `password` varchar(100) DEFAULT NULL COMMENT '密码',
`dept_id` bigint(20) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`mobile` varchar(100) DEFAULT NULL COMMENT '手机号',
@@ -603,7 +731,7 @@ CREATE TABLE `sys_user` (
-- ----------------------------
-- Records of sys_user
-- ----------------------------
-INSERT INTO `sys_user` VALUES ('1', 'admin', '超级管理员', 'd0af8fa1272ef5a152d9e27763eea293', '6', 'admin@example.com', '17699999999', '1', '1', '2017-08-15 21:40:39', '2017-08-15 21:41:00', '96', '2017-12-14 00:00:00', '138', 'ccc', '', '北京市', '北京市市辖区', '东城区');
+INSERT INTO `sys_user` VALUES ('1', 'admin', '超级管理员', '$2a$10$Vp1CxPTT/QBmU88jZYzkXOYgIq04Kvfd.o.YYqFn0y6rC5hgO/Yqe', '6', 'admin@example.com', '17699999999', '1', '1', '2017-08-15 21:40:39', '2017-08-15 21:41:00', '96', '2017-12-14 00:00:00', '138', 'ccc', '', '北京市', '北京市市辖区', '东城区');
INSERT INTO `sys_user` VALUES ('2', 'test', '临时用户', '6cf3bb3deba2aadbd41ec9a22511084e', '6', 'test@bootdo.com', null, '1', '1', '2017-08-14 13:43:05', '2017-08-14 21:15:36', null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('36', 'ldh', '刘德华', 'bfd9394475754fbe45866eba97738c36', '7', 'ldh@bootdo.com', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('123', 'zxy', '张学友', '35174ba93f5fe7267f1fb3c1bf903781', '6', 'zxy@bootdo', null, '0', null, null, null, null, null, null, null, null, null, null, null);
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java
index 61a5431..11d533e 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java
@@ -5,6 +5,7 @@ import com.bootdo.clouddoadmin.service.MenuService;
import com.bootdo.clouddoadmin.service.TokenService;
import com.bootdo.clouddoadmin.service.UserService;
import com.bootdo.clouddoadmin.utils.MD5Utils;
+import com.bootdo.clouddoadmin.utils.SecuityUtils;
import com.bootdo.clouddocommon.annotation.Log;
import com.bootdo.clouddocommon.context.FilterContextHandler;
import com.bootdo.clouddocommon.dto.LoginDTO;
@@ -45,7 +46,7 @@ public class LoginController {
Map param = new HashMap<>();
param.put("username", username);
List userDOs = userService.list(param);
- if(userDOs.size()<1){
+ if (userDOs.size() < 1) {
return R.error("用户或密码错误");
}
UserDO userDO = userDOs.get(0);
@@ -53,9 +54,9 @@ public class LoginController {
return R.error("用户或密码错误");
}
UserToken userToken = new UserToken(userDO.getUsername(), userDO.getUserId().toString(), userDO.getName());
- String token="";
+ String token = "";
try {
- token = JwtUtils.generateToken(userToken, 2*60*60*1000);
+ token = JwtUtils.generateToken(userToken, 2 * 60 * 60 * 1000);
} catch (Exception e) {
e.printStackTrace();
}
@@ -63,9 +64,14 @@ public class LoginController {
menuService.clearCache(userDO.getUserId());
// String token = tokenService.createToken(userDO.getUserId());
return R.ok("登录成功")
- .put("token", token).put("user",userDO)
- .put("perms",menuService.PermsByUserId(userDO.getUserId()))
- .put("router",menuService.RouterDTOsByUserId(userDO.getUserId()));
+ .put("token", token).put("user", userDO)
+ .put("perms", menuService.PermsByUserId(userDO.getUserId()))
+ .put("router", menuService.RouterDTOsByUserId(userDO.getUserId()));
+ }
+
+ @GetMapping("/router")
+ R router() {
+ return R.ok().put("router", menuService.RouterDTOsByUserId(SecuityUtils.getCurrentUser().getId()));
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/RoleController.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/RoleController.java
index c176e33..932325c 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/RoleController.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/RoleController.java
@@ -7,6 +7,7 @@ import com.bootdo.clouddocommon.utils.PageUtils;
import com.bootdo.clouddocommon.utils.Query;
import com.bootdo.clouddocommon.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -22,6 +23,7 @@ public class RoleController {
@Autowired
RoleService roleService;
+ @PreAuthorize("hasAuthority('admin:role:role')")
@GetMapping()
PageUtils list(@RequestParam Map params) {
Query query = new Query(params);
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
index 7918467..5957578 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
@@ -4,8 +4,11 @@ import com.bootdo.clouddoadmin.dao.UserDao;
import com.bootdo.clouddoadmin.domain.UserDO;
import com.bootdo.clouddoadmin.secuity.CurrentUser;
import com.bootdo.clouddoadmin.service.MenuService;
+import com.bootdo.clouddoadmin.utils.MD5Utils;
import com.bootdo.clouddocommon.exception.CDException;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -13,10 +16,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* @author bootdo
@@ -38,6 +39,8 @@ public class UserDetailsServiceImpl implements UserDetailsService {
}
UserDO userDO = userDOS.get(0);
Set perms = menuService.listPerms(userDO.getUserId());
- return new CurrentUser(username, userDO.getPassword(), userDO.getUserId(), new HashSet<>());
+ Set authorities = perms.stream().filter(Objects::nonNull).map(SimpleGrantedAuthority::new).collect(Collectors.toSet());
+ return new CurrentUser(username, userDO.getPassword(), userDO.getUserId(), authorities);
}
+
}
--
Gitee
From 2f1cf9a5e7dade97cae64c91feeb26800eb839d0 Mon Sep 17 00:00:00 2001
From: itshixun/lichunguang
Date: Tue, 2 Apr 2019 11:23:30 +0800
Subject: [PATCH 09/11] =?UTF-8?q?currentUser=E5=A2=9E=E5=8A=A0name?=
=?UTF-8?q?=E5=B1=9E=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../clouddoadmin/controller/UserController.java | 5 +++--
.../bootdo/clouddoadmin/secuity/CurrentUser.java | 15 +++++++++++++++
.../service/impl/UserDetailsServiceImpl.java | 2 +-
3 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java
index 09fa806..36fe8ca 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java
@@ -7,6 +7,7 @@ import com.bootdo.clouddoadmin.dto.do2dto.UserConvert;
import com.bootdo.clouddoadmin.service.RoleService;
import com.bootdo.clouddoadmin.service.UserService;
import com.bootdo.clouddoadmin.utils.MD5Utils;
+import com.bootdo.clouddoadmin.utils.SecuityUtils;
import com.bootdo.clouddocommon.annotation.Log;
import com.bootdo.clouddocommon.context.FilterContextHandler;
import com.bootdo.clouddocommon.dto.LoginUserDTO;
@@ -46,9 +47,9 @@ public class UserController extends BaseController {
@GetMapping("/currentUser")
LoginUserDTO currentUser(){
LoginUserDTO loginUserDTO = new LoginUserDTO();
- loginUserDTO.setUserId(FilterContextHandler.getUserID());
+ loginUserDTO.setUserId(SecuityUtils.getCurrentUser().getId().toString());
loginUserDTO.setUsername(FilterContextHandler.getUsername());
- loginUserDTO.setName(FilterContextHandler.getName());
+ loginUserDTO.setName(SecuityUtils.getCurrentUser().getName());
return loginUserDTO;
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java
index b9feeee..02fa790 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/secuity/CurrentUser.java
@@ -10,9 +10,16 @@ public class CurrentUser extends User {
super(username, password, authorities);
setId(id);
}
+ public CurrentUser(String username, String password, Long id,String name, Collection extends GrantedAuthority> authorities) {
+ super(username, password, authorities);
+ setId(id);
+ setName(name);
+ }
private Long id;
+ private String name;
+
public Long getId() {
return id;
}
@@ -20,4 +27,12 @@ public class CurrentUser extends User {
public void setId(Long id) {
this.id = id;
}
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
}
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
index 5957578..61dd194 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/UserDetailsServiceImpl.java
@@ -40,7 +40,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
UserDO userDO = userDOS.get(0);
Set perms = menuService.listPerms(userDO.getUserId());
Set authorities = perms.stream().filter(Objects::nonNull).map(SimpleGrantedAuthority::new).collect(Collectors.toSet());
- return new CurrentUser(username, userDO.getPassword(), userDO.getUserId(), authorities);
+ return new CurrentUser(username, userDO.getPassword(), userDO.getUserId(), userDO.getName(),authorities);
}
}
--
Gitee
From 6eec8bd8132d3fd9348cb61ef8ae3a2f49969010 Mon Sep 17 00:00:00 2001
From: itshixun/lichunguang
Date: Tue, 2 Apr 2019 16:40:40 +0800
Subject: [PATCH 10/11] =?UTF-8?q?oauth2=E9=80=80=E5=87=BA=E7=99=BB?=
=?UTF-8?q?=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/LoginController.java | 39 +++----------------
1 file changed, 5 insertions(+), 34 deletions(-)
diff --git a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java
index 11d533e..8934d1d 100644
--- a/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java
+++ b/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java
@@ -13,6 +13,7 @@ import com.bootdo.clouddocommon.dto.UserToken;
import com.bootdo.clouddocommon.utils.JwtUtils;
import com.bootdo.clouddocommon.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.oauth2.provider.token.ConsumerTokenServices;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
@@ -36,38 +37,8 @@ public class LoginController {
TokenService tokenService;
@Autowired
MenuService menuService;
-
- @Log("登录")
- @PostMapping("/login")
- R login(@Valid @RequestBody LoginDTO loginDTO, HttpServletRequest request, HttpServletResponse response) {
- String username = loginDTO.getUsername().trim();
- String password = loginDTO.getPwd().trim();
- password = MD5Utils.encrypt(username, password);
- Map param = new HashMap<>();
- param.put("username", username);
- List userDOs = userService.list(param);
- if (userDOs.size() < 1) {
- return R.error("用户或密码错误");
- }
- UserDO userDO = userDOs.get(0);
- if (null == userDO || !userDO.getPassword().equals(password)) {
- return R.error("用户或密码错误");
- }
- UserToken userToken = new UserToken(userDO.getUsername(), userDO.getUserId().toString(), userDO.getName());
- String token = "";
- try {
- token = JwtUtils.generateToken(userToken, 2 * 60 * 60 * 1000);
- } catch (Exception e) {
- e.printStackTrace();
- }
- //首先清除用户缓存权限
- menuService.clearCache(userDO.getUserId());
- // String token = tokenService.createToken(userDO.getUserId());
- return R.ok("登录成功")
- .put("token", token).put("user", userDO)
- .put("perms", menuService.PermsByUserId(userDO.getUserId()))
- .put("router", menuService.RouterDTOsByUserId(userDO.getUserId()));
- }
+ @Autowired
+ private ConsumerTokenServices consumerTokenServices;
@GetMapping("/router")
R router() {
@@ -76,8 +47,8 @@ public class LoginController {
@RequestMapping("/logout")
- R logout(HttpServletRequest request, HttpServletResponse response) {
- menuService.clearCache(Long.parseLong(FilterContextHandler.getUserID()));
+ R logout(String token) {
+ consumerTokenServices.revokeToken(token);
return R.ok();
}
--
Gitee
From 4295e5a1c69da4a9394e0b8ae0e77d36b127c8fd Mon Sep 17 00:00:00 2001
From: itshixun/lichunguang
Date: Tue, 2 Apr 2019 16:43:04 +0800
Subject: [PATCH 11/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0sql=E8=84=9A=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
clouddo-admin/clouddo.sql | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/clouddo-admin/clouddo.sql b/clouddo-admin/clouddo.sql
index f544620..364ad07 100644
--- a/clouddo-admin/clouddo.sql
+++ b/clouddo-admin/clouddo.sql
@@ -10,7 +10,7 @@ Target Server Type : MYSQL
Target Server Version : 50725
File Encoding : 65001
-Date: 2019-03-27 15:56:01
+Date: 2019-04-02 16:42:17
*/
SET FOREIGN_KEY_CHECKS=0;
@@ -75,7 +75,7 @@ CREATE TABLE `oauth_access_token` (
-- ----------------------------
-- Records of oauth_access_token
-- ----------------------------
-INSERT INTO `oauth_access_token` VALUES ('d659bad9c980a1af0025e06271c6e063', 0xACED0005737200436F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F4175746832416363657373546F6B656E0CB29E361B24FACE0200064C00156164646974696F6E616C496E666F726D6174696F6E74000F4C6A6176612F7574696C2F4D61703B4C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B4C000C72656672657368546F6B656E74003F4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F636F6D6D6F6E2F4F417574683252656672657368546F6B656E3B4C000573636F706574000F4C6A6176612F7574696C2F5365743B4C0009746F6B656E547970657400124C6A6176612F6C616E672F537472696E673B4C000576616C756571007E000578707372001E6A6176612E7574696C2E436F6C6C656374696F6E7324456D7074794D6170593614855ADCE7D002000078707372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000169C0B8501C787372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E71007E0002787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C756571007E0005787074002465616562333335342D633833302D346331662D623132632D6262613264643337366230617371007E000977080000016A58A3EA1878737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C0001637400164C6A6176612F7574696C2F436F6C6C656374696F6E3B7870737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F400000000000017400036170707874000662656172657274002465323234633531322D303839392D343638382D393736622D313734363061643032346637, 'b9cdd625a781099755dfb47c3de1e150', 'admin', 'app', 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A657870000000007704000000007871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B72656469726563745572697400124C6A6176612F6C616E672F537472696E673B4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E0011787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000F4C001172657175657374506172616D657465727371007E000E4C000573636F706571007E00117870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E000E7870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E001478017371007E0022770C000000103F40000000000000787371007E00173F40000000000000770800000010000000007870707371007E0022770C000000103F40000000000000787371007E0022770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B000000007704000000007871007E002B737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00173F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E001971007E001A71007E001B71007E001C71007E001D71007E001E7800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572A0F6D8499537099B0200014C000269647400104C6A6176612F6C616E672F4C6F6E673B787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E00114C000870617373776F726471007E000F4C0008757365726E616D6571007E000F7870010101017371007E001F737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F40200007870770400000000787071007E001E7372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000001, '47023366984f5c1fce7e9453bc0c7113');
+INSERT INTO `oauth_access_token` VALUES ('a6ec018d6789c01d00c838bc95467c2d', 0xACED0005737200436F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F4175746832416363657373546F6B656E0CB29E361B24FACE0200064C00156164646974696F6E616C496E666F726D6174696F6E74000F4C6A6176612F7574696C2F4D61703B4C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B4C000C72656672657368546F6B656E74003F4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F636F6D6D6F6E2F4F417574683252656672657368546F6B656E3B4C000573636F706574000F4C6A6176612F7574696C2F5365743B4C0009746F6B656E547970657400124C6A6176612F6C616E672F537472696E673B4C000576616C756571007E000578707372001E6A6176612E7574696C2E436F6C6C656374696F6E7324456D7074794D6170593614855ADCE7D002000078707372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000169DE9313F2787372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E71007E0002787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C756571007E0005787074002433343937313131382D343864392D346365332D613136342D6232666433356334646666357371007E000977080000016A767EADEF78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C0001637400164C6A6176612F7574696C2F436F6C6C656374696F6E3B7870737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000023F400000000000017400036170707874000662656172657274002463386533386634372D646662302D346163392D383030322D643438303564366139353062, 'b9cdd625a781099755dfb47c3de1e150', 'admin', 'app', 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A65787000000014770400000014737200426F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E617574686F726974792E53696D706C654772616E746564417574686F7269747900000000000001F40200014C0004726F6C657400124C6A6176612F6C616E672F537472696E673B787074000E61646D696E3A6D656E753A6164647371007E000D74001661646D696E3A6D656E753A626174636852656D6F76657371007E000D74000F61646D696E3A6D656E753A656469747371007E000D74000F61646D696E3A6D656E753A6C6973747371007E000D74000F61646D696E3A6D656E753A6D656E757371007E000D74001161646D696E3A6D656E753A72656D6F76657371007E000D74000E61646D696E3A726F6C653A6164647371007E000D74001661646D696E3A726F6C653A626174636852656D6F76657371007E000D74000F61646D696E3A726F6C653A656469747371007E000D74001161646D696E3A726F6C653A72656D6F76657371007E000D74000F61646D696E3A726F6C653A726F6C657371007E000D74000E61646D696E3A757365723A6164647371007E000D74001661646D696E3A757365723A626174636852656D6F76657371007E000D74001261646D696E3A757365723A64697361626C657371007E000D74000F61646D696E3A757365723A656469747371007E000D74001161646D696E3A757365723A72656D6F76657371007E000D74001361646D696E3A757365723A72657365745077647371007E000D74000F61646D696E3A757365723A757365727371007E000D74000B636D733A636F6E74656E747371007E000D740008636D733A66696C657871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B726564697265637455726971007E000E4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E003A787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000E4C001172657175657374506172616D657465727371007E00384C000573636F706571007E003A7870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E00387870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E003D78017371007E004B770C000000103F40000000000000787371007E00403F40000000000000770800000010000000007870707371007E004B770C000000103F40000000000000787371007E004B770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B0000001477040000001471007E000F71007E001171007E001371007E001571007E001771007E001971007E001B71007E001D71007E001F71007E002171007E002371007E002571007E002771007E002971007E002B71007E002D71007E002F71007E003171007E003371007E00357871007E0054737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00403F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E004271007E004371007E004471007E004571007E004671007E00477800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572FA08FA21BD5406A90200024C000269647400104C6A6176612F6C616E672F4C6F6E673B4C00046E616D6571007E000E787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E003A4C000870617373776F726471007E000E4C0008757365726E616D6571007E000E7870010101017371007E0048737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F4020000787077040000001471007E000F71007E001171007E001371007E001571007E001771007E001971007E001B71007E001D71007E001F71007E002171007E002371007E002571007E002771007E002971007E002B71007E002D71007E002F71007E003171007E003371007E0035787071007E00477372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000174000FE8B685E7BAA7E7AEA1E79086E59198, 'f91f06fa89955f6805a646c74fe24639');
-- ----------------------------
-- Table structure for `oauth_approvals`
@@ -160,7 +160,8 @@ CREATE TABLE `oauth_refresh_token` (
-- ----------------------------
-- Records of oauth_refresh_token
-- ----------------------------
-INSERT INTO `oauth_refresh_token` VALUES ('47023366984f5c1fce7e9453bc0c7113', 0xACED00057372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C75657400124C6A6176612F6C616E672F537472696E673B787074002465616562333335342D633833302D346331662D623132632D6262613264643337366230617372000E6A6176612E7574696C2E44617465686A81014B597419030000787077080000016A58A3EA1878, 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A657870000000007704000000007871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B72656469726563745572697400124C6A6176612F6C616E672F537472696E673B4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E0011787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000F4C001172657175657374506172616D657465727371007E000E4C000573636F706571007E00117870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E000E7870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E001478017371007E0022770C000000103F40000000000000787371007E00173F40000000000000770800000010000000007870707371007E0022770C000000103F40000000000000787371007E0022770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B000000007704000000007871007E002B737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00173F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E001971007E001A71007E001B71007E001C71007E001D71007E001E7800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572A0F6D8499537099B0200014C000269647400104C6A6176612F6C616E672F4C6F6E673B787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E00114C000870617373776F726471007E000F4C0008757365726E616D6571007E000F7870010101017371007E001F737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F40200007870770400000000787071007E001E7372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000001);
+INSERT INTO `oauth_refresh_token` VALUES ('47023366984f5c1fce7e9453bc0c7113', 0xACED00057372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C75657400124C6A6176612F6C616E672F537472696E673B787074002465616562333335342D633833302D346331662D623132632D6262613264643337366230617372000E6A6176612E7574696C2E44617465686A81014B597419030000787077080000016A58A3EA1878, 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A65787000000014770400000014737200426F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E617574686F726974792E53696D706C654772616E746564417574686F7269747900000000000001F40200014C0004726F6C657400124C6A6176612F6C616E672F537472696E673B787074000E61646D696E3A6D656E753A6164647371007E000D74001661646D696E3A6D656E753A626174636852656D6F76657371007E000D74000F61646D696E3A6D656E753A656469747371007E000D74000F61646D696E3A6D656E753A6C6973747371007E000D74000F61646D696E3A6D656E753A6D656E757371007E000D74001161646D696E3A6D656E753A72656D6F76657371007E000D74000E61646D696E3A726F6C653A6164647371007E000D74001661646D696E3A726F6C653A626174636852656D6F76657371007E000D74000F61646D696E3A726F6C653A656469747371007E000D74001161646D696E3A726F6C653A72656D6F76657371007E000D74000F61646D696E3A726F6C653A726F6C657371007E000D74000E61646D696E3A757365723A6164647371007E000D74001661646D696E3A757365723A626174636852656D6F76657371007E000D74001261646D696E3A757365723A64697361626C657371007E000D74000F61646D696E3A757365723A656469747371007E000D74001161646D696E3A757365723A72656D6F76657371007E000D74001361646D696E3A757365723A72657365745077647371007E000D74000F61646D696E3A757365723A757365727371007E000D74000B636D733A636F6E74656E747371007E000D740008636D733A66696C657871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B726564697265637455726971007E000E4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E003A787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000E4C001172657175657374506172616D657465727371007E00384C000573636F706571007E003A7870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E00387870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E003D78017371007E004B770C000000103F40000000000000787371007E00403F40000000000000770800000010000000007870707371007E004B770C000000103F40000000000000787371007E004B770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B0000001477040000001471007E000F71007E001171007E001371007E001571007E001771007E001971007E001B71007E001D71007E001F71007E002171007E002371007E002571007E002771007E002971007E002B71007E002D71007E002F71007E003171007E003371007E00357871007E0054737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00403F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E004271007E004371007E004471007E004571007E004671007E00477800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572A0F6D8499537099B0200014C000269647400104C6A6176612F6C616E672F4C6F6E673B787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E003A4C000870617373776F726471007E000E4C0008757365726E616D6571007E000E7870010101017371007E0048737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F4020000787077040000001471007E000F71007E001171007E001371007E001571007E001771007E001971007E001B71007E001D71007E001F71007E002171007E002371007E002571007E002771007E002971007E002B71007E002D71007E002F71007E003171007E003371007E0035787071007E00477372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000000000001);
+INSERT INTO `oauth_refresh_token` VALUES ('f91f06fa89955f6805a646c74fe24639', 0xACED00057372004C6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744578706972696E674F417574683252656672657368546F6B656E2FDF47639DD0C9B70200014C000A65787069726174696F6E7400104C6A6176612F7574696C2F446174653B787200446F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E636F6D6D6F6E2E44656661756C744F417574683252656672657368546F6B656E73E10E0A6354D45E0200014C000576616C75657400124C6A6176612F6C616E672F537472696E673B787074002433343937313131382D343864392D346365332D613136342D6232666433356334646666357372000E6A6176612E7574696C2E44617465686A81014B597419030000787077080000016A767EADEF78, 0xACED0005737200416F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F417574683241757468656E7469636174696F6EBD400B02166252130200024C000D73746F7265645265717565737474003C4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F4F4175746832526571756573743B4C00127573657241757468656E7469636174696F6E7400324C6F72672F737072696E676672616D65776F726B2F73656375726974792F636F72652F41757468656E7469636174696F6E3B787200476F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E416273747261637441757468656E7469636174696F6E546F6B656ED3AA287E6E47640E0200035A000D61757468656E746963617465644C000B617574686F7269746965737400164C6A6176612F7574696C2F436F6C6C656374696F6E3B4C000764657461696C737400124C6A6176612F6C616E672F4F626A6563743B787000737200266A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654C697374FC0F2531B5EC8E100200014C00046C6973747400104C6A6176612F7574696C2F4C6973743B7872002C6A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65436F6C6C656374696F6E19420080CB5EF71E0200014C00016371007E00047870737200136A6176612E7574696C2E41727261794C6973747881D21D99C7619D03000149000473697A65787000000014770400000014737200426F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E617574686F726974792E53696D706C654772616E746564417574686F7269747900000000000001F40200014C0004726F6C657400124C6A6176612F6C616E672F537472696E673B787074000E61646D696E3A6D656E753A6164647371007E000D74001661646D696E3A6D656E753A626174636852656D6F76657371007E000D74000F61646D696E3A6D656E753A656469747371007E000D74000F61646D696E3A6D656E753A6C6973747371007E000D74000F61646D696E3A6D656E753A6D656E757371007E000D74001161646D696E3A6D656E753A72656D6F76657371007E000D74000E61646D696E3A726F6C653A6164647371007E000D74001661646D696E3A726F6C653A626174636852656D6F76657371007E000D74000F61646D696E3A726F6C653A656469747371007E000D74001161646D696E3A726F6C653A72656D6F76657371007E000D74000F61646D696E3A726F6C653A726F6C657371007E000D74000E61646D696E3A757365723A6164647371007E000D74001661646D696E3A757365723A626174636852656D6F76657371007E000D74001261646D696E3A757365723A64697361626C657371007E000D74000F61646D696E3A757365723A656469747371007E000D74001161646D696E3A757365723A72656D6F76657371007E000D74001361646D696E3A757365723A72657365745077647371007E000D74000F61646D696E3A757365723A757365727371007E000D74000B636D733A636F6E74656E747371007E000D740008636D733A66696C657871007E000C707372003A6F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E4F41757468325265717565737400000000000000010200075A0008617070726F7665644C000B617574686F72697469657371007E00044C000A657874656E73696F6E7374000F4C6A6176612F7574696C2F4D61703B4C000B726564697265637455726971007E000E4C00077265667265736874003B4C6F72672F737072696E676672616D65776F726B2F73656375726974792F6F61757468322F70726F76696465722F546F6B656E526571756573743B4C000B7265736F7572636549647374000F4C6A6176612F7574696C2F5365743B4C000D726573706F6E7365547970657371007E003A787200386F72672E737072696E676672616D65776F726B2E73656375726974792E6F61757468322E70726F76696465722E426173655265717565737436287A3EA37169BD0200034C0008636C69656E74496471007E000E4C001172657175657374506172616D657465727371007E00384C000573636F706571007E003A7870740003617070737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C654D6170F1A5A8FE74F507420200014C00016D71007E00387870737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F400000000000067708000000080000000374000A6772616E745F7479706574000870617373776F7264740009636C69656E745F6964740003617070740008757365726E616D6574000561646D696E78737200256A6176612E7574696C2E436F6C6C656374696F6E7324556E6D6F6469666961626C65536574801D92D18F9B80550200007871007E0009737200176A6176612E7574696C2E4C696E6B656448617368536574D86CD75A95DD2A1E020000787200116A6176612E7574696C2E48617368536574BA44859596B8B7340300007870770C000000103F4000000000000171007E003D78017371007E004B770C000000103F40000000000000787371007E00403F40000000000000770800000010000000007870707371007E004B770C000000103F40000000000000787371007E004B770C000000103F40000000000000787372004F6F72672E737072696E676672616D65776F726B2E73656375726974792E61757468656E7469636174696F6E2E557365726E616D6550617373776F726441757468656E7469636174696F6E546F6B656E00000000000001F40200024C000B63726564656E7469616C7371007E00054C00097072696E636970616C71007E00057871007E0003017371007E00077371007E000B0000001477040000001471007E000F71007E001171007E001371007E001571007E001771007E001971007E001B71007E001D71007E001F71007E002171007E002371007E002571007E002771007E002971007E002B71007E002D71007E002F71007E003171007E003371007E00357871007E0054737200176A6176612E7574696C2E4C696E6B6564486173684D617034C04E5C106CC0FB0200015A000B6163636573734F726465727871007E00403F400000000000067708000000080000000474000D636C69656E745F73656372657474000631323334353671007E004271007E004371007E004471007E004571007E004671007E00477800707372002B636F6D2E626F6F74646F2E636C6F7564646F61646D696E2E736563756974792E43757272656E7455736572FA08FA21BD5406A90200024C000269647400104C6A6176612F6C616E672F4C6F6E673B4C00046E616D6571007E000E787200326F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657200000000000001F40200075A00116163636F756E744E6F6E457870697265645A00106163636F756E744E6F6E4C6F636B65645A001563726564656E7469616C734E6F6E457870697265645A0007656E61626C65644C000B617574686F72697469657371007E003A4C000870617373776F726471007E000E4C0008757365726E616D6571007E000E7870010101017371007E0048737200116A6176612E7574696C2E54726565536574DD98509395ED875B0300007870737200466F72672E737072696E676672616D65776F726B2E73656375726974792E636F72652E7573657264657461696C732E5573657224417574686F72697479436F6D70617261746F7200000000000001F4020000787077040000001471007E000F71007E001171007E001371007E001571007E001771007E001971007E001B71007E001D71007E001F71007E002171007E002371007E002571007E002771007E002971007E002B71007E002D71007E002F71007E003171007E003371007E0035787071007E00477372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000174000FE8B685E7BAA7E7AEA1E79086E59198);
-- ----------------------------
-- Table structure for `sys_dept`
@@ -456,7 +457,6 @@ INSERT INTO `sys_menu` VALUES ('86', '85', '列表', '/api-base/log', null, '2',
INSERT INTO `sys_menu` VALUES ('87', '81', '上传', '/file/upload', null, '2', null, null, null, null, null, null);
INSERT INTO `sys_menu` VALUES ('88', '0', '系统监控', null, null, '0', 'fa fa-video-camera', null, null, null, null, null);
INSERT INTO `sys_menu` VALUES ('89', '88', '服务注册', 'http://localhost:8001', null, '1', null, null, null, null, null, null);
-INSERT INTO `sys_menu` VALUES ('90', '0', '系统工具', null, null, '0', 'fa fa-wrench', null, null, null, null, null);
-- ----------------------------
-- Table structure for `sys_role`
@@ -643,7 +643,6 @@ INSERT INTO `sys_role_menu` VALUES ('2343', '77', '84');
INSERT INTO `sys_role_menu` VALUES ('2344', '77', '72');
INSERT INTO `sys_role_menu` VALUES ('2345', '77', '-1');
INSERT INTO `sys_role_menu` VALUES ('2346', '77', '77');
-INSERT INTO `sys_role_menu` VALUES ('3195', '1', '90');
INSERT INTO `sys_role_menu` VALUES ('3196', '1', '88');
INSERT INTO `sys_role_menu` VALUES ('3197', '1', '89');
INSERT INTO `sys_role_menu` VALUES ('3198', '1', '84');
@@ -742,7 +741,7 @@ INSERT INTO `sys_user` VALUES ('132', 'lyf', '刘亦菲', '7fdb1d9008f45950c1620
INSERT INTO `sys_user` VALUES ('134', 'lyh', '李彦宏', 'dc26092b3244d9d432863f2738180e19', '8', 'lyh@bootdo.com', null, '1', null, null, null, null, '2018-03-18 00:00:00', null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('135', 'wjl', '王健林', '3967697dfced162cf6a34080259b83aa', '6', 'wjl@bootod.com', null, '1', null, null, null, null, '2018-03-19 00:00:00', null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('136', 'gdg2', '郭德纲', '3bb1bda86bc02bf6478cd91e42135d2f', '9', 'gdg@bootdo.com', null, '1', null, null, null, null, '2018-03-07 00:00:00', null, null, null, null, null, null);
-INSERT INTO `sys_user` VALUES ('156', 'test2', '测试二', '9f411bc8445132fba6bef0ee865f9d08', null, 'test2@bootdo', null, null, null, null, null, null, '2018-03-06 00:00:00', null, null, null, null, null, null);
+INSERT INTO `sys_user` VALUES ('156', 'test2', '测试二', '9f411bc8445132fba6bef0ee865f9d08', null, 'test2@bootdo', null, null, null, null, null, null, '2018-03-15 00:00:00', null, null, null, null, null, null);
-- ----------------------------
-- Table structure for `sys_user_plus`
@@ -768,7 +767,7 @@ CREATE TABLE `sys_user_role` (
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
`role_id` bigint(20) DEFAULT NULL COMMENT '角色ID',
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=166 DEFAULT CHARSET=utf8 COMMENT='用户与角色对应关系';
+) ENGINE=InnoDB AUTO_INCREMENT=169 DEFAULT CHARSET=utf8 COMMENT='用户与角色对应关系';
-- ----------------------------
-- Records of sys_user_role
@@ -795,7 +794,6 @@ INSERT INTO `sys_user_role` VALUES ('111', '2', '1');
INSERT INTO `sys_user_role` VALUES ('124', null, '48');
INSERT INTO `sys_user_role` VALUES ('127', '123', '48');
INSERT INTO `sys_user_role` VALUES ('132', '36', '48');
-INSERT INTO `sys_user_role` VALUES ('150', '156', '1');
INSERT INTO `sys_user_role` VALUES ('151', '136', '1');
INSERT INTO `sys_user_role` VALUES ('152', '135', '1');
INSERT INTO `sys_user_role` VALUES ('153', '134', '1');
@@ -806,6 +804,7 @@ INSERT INTO `sys_user_role` VALUES ('159', '131', '1');
INSERT INTO `sys_user_role` VALUES ('160', '130', '1');
INSERT INTO `sys_user_role` VALUES ('164', '124', '56');
INSERT INTO `sys_user_role` VALUES ('165', '124', '48');
+INSERT INTO `sys_user_role` VALUES ('168', '156', '1');
-- ----------------------------
-- Table structure for `sys_user_token`
--
Gitee