From b59ca89001a572f450a84926bb603acc9aee996b Mon Sep 17 00:00:00 2001 From: 沈斌 <bluelazysb@hotmail.com> Date: Sun, 05 Nov 2017 14:24:40 +0800 Subject: [PATCH] updated --- src/main/java/com/moral/security/WebSecurityConfiguration.java | 87 ++++++ src/main/java/com/moral/security/AuthorizationServerConfiguration.java | 53 ++++ src/main/java/com/moral/service/impl/UserServiceImpl.java | 22 + src/main/java/com/moral/entity/auth/AuthUser.java | 44 +++ src/main/java/com/moral/mapper/UserMapper.java | 12 pom.xml | 34 ++ src/main/java/com/moral/controller/TokenController.java | 55 ++++ src/main/resources/mapper/UserMapper.xml | 10 src/main/java/com/moral/controller/TestController.java | 52 ++++ src/main/java/com/moral/service/impl/AuthUserServiceImpl.java | 38 ++ /dev/null | 0 src/main/java/com/moral/entity/auth/AuthRole.java | 25 + src/main/java/com/moral/security/WebMvcConfiguration.java | 23 + src/main/java/com/moral/security/ResourceServerConfiguration.java | 31 ++ src/main/java/com/moral/entity/auth/AuthToken.java | 46 +++ src/main/java/com/moral/entity/Equipment.java | 156 ++++++++++++ src/main/java/com/moral/service/UserService.java | 10 src/main/resources/application.yml | 66 +++++ 18 files changed, 764 insertions(+), 0 deletions(-) diff --git a/pom.xml b/pom.xml index 1bb09d4..ef4950d 100644 --- a/pom.xml +++ b/pom.xml @@ -53,6 +53,23 @@ <dependency> <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-security</artifactId> + </dependency> + + <dependency> + <groupId>org.mybatis.spring.boot</groupId> + <artifactId>mybatis-spring-boot-starter</artifactId> + <version>1.3.1</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-redis</artifactId> + </dependency> + + + <dependency> + <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> @@ -61,6 +78,23 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.springframework.security.oauth</groupId> + <artifactId>spring-security-oauth2</artifactId> + </dependency> + + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>druid</artifactId> + <version>1.1.5</version> + </dependency> + + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>5.1.44</version> + </dependency> </dependencies> <build> diff --git a/src/main/java/com/moral/controller/TestController.java b/src/main/java/com/moral/controller/TestController.java new file mode 100644 index 0000000..3cc23e4 --- /dev/null +++ b/src/main/java/com/moral/controller/TestController.java @@ -0,0 +1,52 @@ +package com.moral.controller; + +import com.moral.entity.auth.AuthRole; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/test") +public class TestController { + + @RequestMapping("/hello") + public String hello() { + + return "Hello World"; + } + + @RequestMapping(value = "/list_roles", method = RequestMethod.GET) + @PreAuthorize("hasAnyRole('USER', 'ADMIN')") + public List<AuthRole> listRoles() { + + List<AuthRole> roles = new ArrayList<>(); + AuthRole role1 = new AuthRole(); + role1.setId(1); + role1.setRole_name("USER"); + roles.add(role1); + + AuthRole role2 = new AuthRole(); + role2.setId(2); + role2.setRole_name("USER"); + roles.add(role2); + + return roles; + } + + @RequestMapping(value = "/list_users", method = RequestMethod.GET) + @PreAuthorize("hasRole('ADMIN')") + public List<String> listUsers() { + + List<String> data = new ArrayList<>(); + data.add("bob"); + data.add("bill"); + data.add("john"); + + return data; + } +} diff --git a/src/main/java/com/moral/controller/TokenController.java b/src/main/java/com/moral/controller/TokenController.java new file mode 100644 index 0000000..2b5fead --- /dev/null +++ b/src/main/java/com/moral/controller/TokenController.java @@ -0,0 +1,55 @@ +package com.moral.controller; + +import com.moral.entity.auth.AuthToken; +import org.apache.commons.codec.binary.Base64; +import org.springframework.http.*; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.client.RestTemplate; + +import java.util.Arrays; +import java.util.LinkedHashMap; + +@Controller +public class TokenController { + + private static final String AUTH_SERVER_URI = "http://localhost:8001/oauth/token?grant_type=password&"; + + @ResponseBody + @RequestMapping(value = "/oauth/token/{username}/{password}", method = RequestMethod.GET) + public AuthToken get_auth_token(@PathVariable("username") String username, @PathVariable("password") String password) { + + RestTemplate restTemplate = new RestTemplate(); + HttpEntity<String> request = new HttpEntity<String>(getHeadersWithClientCredentials()); + ResponseEntity<Object> response = restTemplate.exchange(AUTH_SERVER_URI+"username="+username+"&password="+password, HttpMethod.POST, request, Object.class); + LinkedHashMap<String, Object> map = (LinkedHashMap<String, Object>)response.getBody(); + AuthToken token = null; + if(map!=null){ + token = new AuthToken(); + token.setAccess_token((String)map.get("access_token")); + token.setToken_type((String)map.get("token_type")); + token.setRefresh_token((String)map.get("refresh_token")); + token.setExpires_in((Integer)map.get("expires_in")); + token.setScope((String)map.get("scope")); + System.out.println(token); + } + return token; + } + + private static HttpHeaders getHeaders(){ + HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); + return headers; + } + + private static HttpHeaders getHeadersWithClientCredentials(){ + String plainClientCredentials="my-trusted-client:secret"; + String base64ClientCredentials = new String(Base64.encodeBase64(plainClientCredentials.getBytes())); + HttpHeaders headers = getHeaders(); + headers.add("Authorization", "Basic " + base64ClientCredentials); + return headers; + } +} diff --git a/src/main/java/com/moral/entity/Equipment.java b/src/main/java/com/moral/entity/Equipment.java new file mode 100644 index 0000000..ad6c571 --- /dev/null +++ b/src/main/java/com/moral/entity/Equipment.java @@ -0,0 +1,156 @@ +package com.moral.entity; + +import java.util.Date; + +public class Equipment { + + private Integer id; + + private String name; + + private String address; + + private Double longitude; + + private Double latitude; + + private String mac; + + private Integer state; + + private Date time; + + private String installer; + + private String repairman; + + private String province; + + private String city; + + private String area; + + private String monitorpoint; + + private String ownerId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Double getLongitude() { + return longitude; + } + + public void setLongitude(Double longitude) { + this.longitude = longitude; + } + + public Double getLatitude() { + return latitude; + } + + public void setLatitude(Double latitude) { + this.latitude = latitude; + } + + public String getMac() { + return mac; + } + + public void setMac(String mac) { + this.mac = mac; + } + + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public String getInstaller() { + return installer; + } + + public void setInstaller(String installer) { + this.installer = installer; + } + + public String getRepairman() { + return repairman; + } + + public void setRepairman(String repairman) { + this.repairman = repairman; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public String getMonitorpoint() { + return monitorpoint; + } + + public void setMonitorpoint(String monitorpoint) { + this.monitorpoint = monitorpoint; + } + + public String getOwnerId() { + return ownerId; + } + + public void setOwnerId(String ownerId) { + this.ownerId = ownerId; + } +} \ No newline at end of file diff --git a/src/main/java/com/moral/entity/auth/AuthRole.java b/src/main/java/com/moral/entity/auth/AuthRole.java new file mode 100644 index 0000000..75cdeea --- /dev/null +++ b/src/main/java/com/moral/entity/auth/AuthRole.java @@ -0,0 +1,25 @@ +package com.moral.entity.auth; + +import java.io.Serializable; + +public class AuthRole implements Serializable { + + private int id; + private String role_name; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getRole_name() { + return role_name; + } + + public void setRole_name(String role_name) { + this.role_name = role_name; + } +} diff --git a/src/main/java/com/moral/entity/auth/AuthToken.java b/src/main/java/com/moral/entity/auth/AuthToken.java new file mode 100644 index 0000000..d3d62c7 --- /dev/null +++ b/src/main/java/com/moral/entity/auth/AuthToken.java @@ -0,0 +1,46 @@ +package com.moral.entity.auth; + +public class AuthToken { + + private String access_token; + private String token_type; + private String refresh_token; + private int expires_in; + private String scope; + + public String getAccess_token() { + return access_token; + } + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + public String getToken_type() { + return token_type; + } + public void setToken_type(String token_type) { + this.token_type = token_type; + } + public String getRefresh_token() { + return refresh_token; + } + public void setRefresh_token(String refresh_token) { + this.refresh_token = refresh_token; + } + public int getExpires_in() { + return expires_in; + } + public void setExpires_in(int expires_in) { + this.expires_in = expires_in; + } + public String getScope() { + return scope; + } + public void setScope(String scope) { + this.scope = scope; + } + @Override + public String toString() { + return "AuthToken [access_token=" + access_token + ", token_type=" + token_type + ", refresh_token=" + + refresh_token + ", expires_in=" + expires_in + ", scope=" + scope + "]"; + } +} diff --git a/src/main/java/com/moral/entity/auth/AuthUser.java b/src/main/java/com/moral/entity/auth/AuthUser.java new file mode 100644 index 0000000..5c0e264 --- /dev/null +++ b/src/main/java/com/moral/entity/auth/AuthUser.java @@ -0,0 +1,44 @@ +package com.moral.entity.auth; + +import java.util.ArrayList; +import java.util.List; + +public class AuthUser { + + private int id; + private String username; + private String password; + private List<AuthRole> list = new ArrayList<AuthRole>(); + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public List<AuthRole> getList() { + return list; + } + + public void setList(List<AuthRole> list) { + this.list = list; + } +} diff --git a/src/main/java/com/moral/mapper/UserMapper.java b/src/main/java/com/moral/mapper/UserMapper.java new file mode 100644 index 0000000..9070663 --- /dev/null +++ b/src/main/java/com/moral/mapper/UserMapper.java @@ -0,0 +1,12 @@ +package com.moral.mapper; + +import com.moral.entity.auth.AuthUser; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface UserMapper { + + public AuthUser findByUsername(String name); +} diff --git a/src/main/java/com/moral/security/AuthorizationServerConfiguration.java b/src/main/java/com/moral/security/AuthorizationServerConfiguration.java new file mode 100644 index 0000000..17da5b1 --- /dev/null +++ b/src/main/java/com/moral/security/AuthorizationServerConfiguration.java @@ -0,0 +1,53 @@ +package com.moral.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +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.approval.UserApprovalHandler; +import org.springframework.security.oauth2.provider.token.TokenStore; + +@Configuration +@EnableAuthorizationServer +public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { + + private static String REALM = "MY_OAUTH_REALM"; + + @Autowired + private TokenStore tokenStore; + + @Autowired + private UserApprovalHandler userApprovalHandler; + + @Autowired + @Qualifier("authenticationManagerBean") + private AuthenticationManager authenticationManager; + + @Override + public void configure(ClientDetailsServiceConfigurer clients) throws Exception { + + clients.inMemory() + .withClient("my-trusted-client")//���������ID + .authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit") + .authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT") + .scopes("read", "write", "trust")//��������������������������� + .secret("secret")//������ + .accessTokenValiditySeconds(1200).//token������������1200��� + refreshTokenValiditySeconds(6000);//������token������������6000��� + } + + @Override + public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { + endpoints.tokenStore(tokenStore).userApprovalHandler(userApprovalHandler).authenticationManager(authenticationManager); + } + + @Override + public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception { + oauthServer.realm(REALM + "/client"); + } +} \ No newline at end of file diff --git a/src/main/java/com/moral/security/ResourceServerConfiguration.java b/src/main/java/com/moral/security/ResourceServerConfiguration.java new file mode 100644 index 0000000..a69f9b4 --- /dev/null +++ b/src/main/java/com/moral/security/ResourceServerConfiguration.java @@ -0,0 +1,31 @@ +package com.moral.security; + +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 org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; +import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler; + +@Configuration +@EnableResourceServer +public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter { + + private static final String RESOURCE_ID = "my_rest_api"; + + @Override + public void configure(ResourceServerSecurityConfigurer resources) { + resources.resourceId(RESOURCE_ID).stateless(false); + } + + @Override + public void configure(HttpSecurity http) throws Exception { + http.anonymous().disable(); + http.requestMatchers() + .antMatchers("/test/**") + .and() + .authorizeRequests() + .antMatchers("/test/**").permitAll() + .and().exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler()); + } +} \ No newline at end of file diff --git a/src/main/java/com/moral/security/WebMvcConfiguration.java b/src/main/java/com/moral/security/WebMvcConfiguration.java new file mode 100644 index 0000000..c81dd9f --- /dev/null +++ b/src/main/java/com/moral/security/WebMvcConfiguration.java @@ -0,0 +1,23 @@ +package com.moral.security; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +@EnableWebMvc +public class WebMvcConfiguration extends WebMvcConfigurerAdapter { + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**").allowedOrigins("*") + .allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS") + .allowCredentials(false).maxAge(3600); + +// registry.addMapping("/api/**") +// .allowedOrigins("http://192.168.1.97") +// .allowedMethods("GET", "POST") +// .allowCredentials(false).maxAge(3600); + } +} diff --git a/src/main/java/com/moral/security/WebSecurityConfiguration.java b/src/main/java/com/moral/security/WebSecurityConfiguration.java new file mode 100644 index 0000000..78b3e36 --- /dev/null +++ b/src/main/java/com/moral/security/WebSecurityConfiguration.java @@ -0,0 +1,87 @@ +package com.moral.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.security.SecurityProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.encoding.Md5PasswordEncoder; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.oauth2.provider.ClientDetailsService; +import org.springframework.security.oauth2.provider.approval.ApprovalStore; +import org.springframework.security.oauth2.provider.approval.TokenApprovalStore; +import org.springframework.security.oauth2.provider.approval.TokenStoreUserApprovalHandler; +import org.springframework.security.oauth2.provider.request.DefaultOAuth2RequestFactory; +import org.springframework.security.oauth2.provider.token.TokenStore; +import org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore; + +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) +public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { + + @Autowired + private ClientDetailsService clientDetailsService; + + @Autowired + private RedisConnectionFactory redisConnection; + + @Autowired + private UserDetailsService userDetailsService; + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication() + .withUser("bill").password("abc123").roles("ADMIN").and() + .withUser("bob").password("abc123").roles("USER"); + +// auth.userDetailsService(userDetailsService).passwordEncoder(new Md5PasswordEncoder()); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .anonymous().disable() + .authorizeRequests() + .antMatchers("/oauth/token").permitAll(); + } + + @Override + @Bean + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + + @Bean + public TokenStore tokenStore() { + //return new InMemoryTokenStore(); + return new RedisTokenStore(redisConnection); + } + + @Bean + @Autowired + public TokenStoreUserApprovalHandler userApprovalHandler(TokenStore tokenStore){ + TokenStoreUserApprovalHandler handler = new TokenStoreUserApprovalHandler(); + handler.setTokenStore(tokenStore); + handler.setRequestFactory(new DefaultOAuth2RequestFactory(clientDetailsService)); + handler.setClientDetailsService(clientDetailsService); + return handler; + } + + @Bean + @Autowired + public ApprovalStore approvalStore(TokenStore tokenStore) throws Exception { + TokenApprovalStore store = new TokenApprovalStore(); + store.setTokenStore(tokenStore); + return store; + } +} diff --git a/src/main/java/com/moral/service/UserService.java b/src/main/java/com/moral/service/UserService.java new file mode 100644 index 0000000..e8ce740 --- /dev/null +++ b/src/main/java/com/moral/service/UserService.java @@ -0,0 +1,10 @@ +package com.moral.service; + +import com.moral.entity.auth.AuthUser; + +import java.util.List; + +public interface UserService { + + AuthUser findByUsername(String name); +} diff --git a/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java b/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java new file mode 100644 index 0000000..314c621 --- /dev/null +++ b/src/main/java/com/moral/service/impl/AuthUserServiceImpl.java @@ -0,0 +1,38 @@ +package com.moral.service.impl; + +import com.moral.entity.auth.AuthRole; +import com.moral.entity.auth.AuthUser; +import com.moral.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; + +@Service +public class AuthUserServiceImpl implements UserDetailsService { + + @Autowired + private UserService userService; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + AuthUser user = userService.findByUsername(username); + + if(user == null){ + throw new UsernameNotFoundException("������������"+ username + "������������"); + } + Collection<SimpleGrantedAuthority> collection = new HashSet<SimpleGrantedAuthority>(); + Iterator<AuthRole> iterator = user.getList().iterator(); + while (iterator.hasNext()){ + collection.add(new SimpleGrantedAuthority(iterator.next().getRole_name())); + } + + return new org.springframework.security.core.userdetails.User(username, user.getPassword(), collection); + } +} diff --git a/src/main/java/com/moral/service/impl/UserServiceImpl.java b/src/main/java/com/moral/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..e6a32cb --- /dev/null +++ b/src/main/java/com/moral/service/impl/UserServiceImpl.java @@ -0,0 +1,22 @@ +package com.moral.service.impl; + +import com.moral.entity.auth.AuthRole; +import com.moral.entity.auth.AuthUser; +import com.moral.mapper.UserMapper; +import com.moral.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private UserMapper userMapper; + + @Override + public AuthUser findByUsername(String name) { + return userMapper.findByUsername(name); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties deleted file mode 100644 index e69de29..0000000 --- a/src/main/resources/application.properties +++ /dev/null diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..3b5c61a --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,66 @@ +server: + port: 8001 + session-timeout: 30 + tomcat.max-threads: 0 + tomcat.uri-encoding: UTF-8 + +spring: + datasource: + url: jdbc:mysql://101.37.22.173:3306/monitor?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC + username: root + password: xOlx8z9L7Pt6y9YI + #driver-class-name: com.mysql.cj.jdbc.Driver + type: com.alibaba.druid.pool.DruidDataSource + # ��������������������������������������������������������������������� + # ��������������������������������� + initialSize: 1 + minIdle: 3 + maxActive: 20 + # ��������������������������������������� + maxWait: 60000 + # ��������������������������������������������������������������������������������������������� + timeBetweenEvictionRunsMillis: 60000 + # ������������������������������������������������������������������ + minEvictableIdleTimeMillis: 30000 + validationQuery: select 'x' + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # ������PSCache������������������������������PSCache��������� + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # ���������������������������filters������������������������sql���������������'wall'��������������� + filters: stat,wall,slf4j + # ������connectProperties���������������mergeSql������������SQL������ + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + # ������������DruidDataSource��������������� + useGlobalDataSourceStat: true + + rabbitmq: + host: 116.62.12.115 + port: 5672 + username: guest + password: guest + channelCacheSize: 10 + + + redis: + host: 101.37.22.173 + port: 6379 + password: redis_pass + database: 0 + timeout: 0 + pool: + max-active: 8 + max-wait: -1 + max-idle: 8 + min-idle: 0 + + + data: + mongodb: + uri: mongodb://101.37.22.173:27017/monitor + +mybatis: + mapper-locations: classpath*:/mapper/*Mapper.xml + type-aliases-package: com.moral.entity \ No newline at end of file diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..65e04c7 --- /dev/null +++ b/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="com.moral.mapper.UserMapper"> + + <select id="findByUsername" resultType="com.moral.entity.auth.AuthUser"> + + </select> + +</mapper> \ No newline at end of file -- Gitblit v1.8.0