diff --git a/1.SSO单点登录/sso/pom.xml b/1.SSO单点登录/sso/pom.xml
index 02ca007..7781a5e 100644
--- a/1.SSO单点登录/sso/pom.xml
+++ b/1.SSO单点登录/sso/pom.xml
@@ -28,6 +28,22 @@
org.springframework.boot
spring-boot-starter-data-redis
+
+
+ io.lettuce
+ lettuce-core
+
+
+
+
+
+ org.apache.commons
+ commons-pool2
+
+
+
+ redis.clients
+ jedis
diff --git a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/config/RedisConfig.java b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/config/RedisConfig.java
index ed26de3..1fa30ce 100644
--- a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/config/RedisConfig.java
+++ b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/config/RedisConfig.java
@@ -3,6 +3,9 @@ package com.infinova.sso.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
@@ -12,11 +15,13 @@ import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
+import redis.clients.jedis.JedisPoolConfig;
import java.time.Duration;
@@ -31,6 +36,28 @@ import java.time.Duration;
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
+ private static Logger logger = LoggerFactory.getLogger(RedisConfig.class);
+
+ @Value("${spring.redis.host}")
+ private String host;
+ @Value("${spring.redis.password}")
+ private String password;
+ @Value("${spring.redis.port}")
+ private int port;
+ @Value("${spring.redis.timeout}")
+ private int timeout;
+ @Value("${spring.redis.database}")
+ private int database;
+ @Value("${spring.redis.jedis.pool.max-idle}")
+ private int maxIdle;
+ @Value("${spring.redis.jedis.pool.min-idle}")
+ private int minIdle;
+ @Value("${spring.redis.jedis.pool.max-wait}")
+ private long maxWaitMillis;
+ @Value("${spring.redis.jedis.pool.max-active}")
+ private int maxActive;
+
+
/**
* 设置缓存管理器,这里可以配置默认过期时间等
*
@@ -38,11 +65,11 @@ public class RedisConfig extends CachingConfigurerSupport {
* @return
*/
@Bean
- public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
+ public CacheManager cacheManager(JedisConnectionFactory jedisConnectionFactory) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration
.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(60));
- RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);
+ RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(jedisConnectionFactory);
RedisCacheManager manager = new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
return manager;
}
@@ -64,4 +91,27 @@ public class RedisConfig extends CachingConfigurerSupport {
template.afterPropertiesSet();
return template;
}
+
+
+ @Bean
+ public JedisConnectionFactory jedisConnectionFactory() {
+ logger.info("jedisConnectionFactory:初始化了");
+ JedisPoolConfig config = new JedisPoolConfig();
+ config.setMaxIdle(maxIdle);
+ config.setMinIdle(minIdle);
+ config.setMaxWaitMillis(maxWaitMillis);
+ config.setMaxTotal(maxActive);
+ //链接耗尽时是否阻塞,默认true
+ config.setBlockWhenExhausted(true);
+ //是否启用pool的jmx管理功能,默认true
+ config.setJmxEnabled(true);
+ JedisConnectionFactory factory = new JedisConnectionFactory();
+ factory.setPoolConfig(config);
+ factory.setHostName(host);
+ factory.setPort(port);
+ factory.setPassword(password);
+ factory.setDatabase(database);
+ factory.setTimeout(timeout);
+ return factory;
+ }
}
diff --git a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java
index 4654c7d..274d51d 100644
--- a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java
+++ b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/controller/JwtController.java
@@ -1,10 +1,8 @@
package com.infinova.sso.controller;
-import com.alibaba.fastjson.JSONArray;
import com.infinova.sso.entity.ReturnEntity;
import com.infinova.sso.entity.User;
import com.infinova.sso.service.JwtService;
-import com.infinova.sso.util.HttpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -34,14 +32,13 @@ public class JwtController {
return ReturnEntity.successResult(token);
}
- @PostMapping("/checkJwt")
+ @GetMapping("/checkJwt")
public ReturnEntity checkJwt(String token) {
return ReturnEntity.successResult(service.checkJwt(token));
}
@GetMapping("/inValid")
- public ReturnEntity inValid() {
- String token = HttpUtil.getData(JwtService.JWT_KEY);
+ public ReturnEntity inValid(String token) {
service.inValid(token);
return ReturnEntity.successResult(null);
}
diff --git a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/util/RedisUtil.java b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/util/RedisUtil.java
index 4dbe147..4d82e68 100644
--- a/1.SSO单点登录/sso/src/main/java/com/infinova/sso/util/RedisUtil.java
+++ b/1.SSO单点登录/sso/src/main/java/com/infinova/sso/util/RedisUtil.java
@@ -1,8 +1,7 @@
package com.infinova.sso.util;
-import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@@ -18,20 +17,23 @@ import java.util.concurrent.TimeUnit;
public class RedisUtil {
private static final int DEFAULT_EXPIRE_TIME = 60 * 1000;
- public static RedisTemplate redisTemplate;
+ public static StringRedisTemplate redisTemplate;
@Autowired
- public void setRedisTemplate(RedisTemplate redisTemplate) {
+ public void setRedisTemplate(StringRedisTemplate redisTemplate) {
RedisUtil.redisTemplate = redisTemplate;
}
+ @Autowired
+
+
/**
* 设置键值对,使用默认过期时间
*
* @param key 键
* @param value 值
*/
- public static void set(String key, Object value) {
+ public static void set(String key, String value) {
set(key, value, DEFAULT_EXPIRE_TIME);
}
@@ -42,8 +44,8 @@ public class RedisUtil {
* @param value value
* @param expireTime 过期时间
*/
- public static void set(String key, Object value, long expireTime) {
- redisTemplate.opsForValue().set(key, JSON.toJSONString(value));
+ public static void set(String key, String value, long expireTime) {
+ redisTemplate.opsForValue().set(key, value);
redisTemplate.expire(key, expireTime, TimeUnit.MILLISECONDS);
}
diff --git a/1.SSO单点登录/sso/src/main/resources/application.yml b/1.SSO单点登录/sso/src/main/resources/application.yml
index 2d06dbf..584b359 100644
--- a/1.SSO单点登录/sso/src/main/resources/application.yml
+++ b/1.SSO单点登录/sso/src/main/resources/application.yml
@@ -9,22 +9,22 @@ spring:
type: redis
redis:
database: 0
- host: 192.168.1.100
+ host: 10.82.27.177
port: 6379
password:
# 连接超时时间(ms)
- timeout: 1000ms
+ timeout: 5000
# 高版本springboot中使用jedis或者lettuce
jedis:
pool:
# 连接池最大连接数(负值表示无限制)
max-active: 8
# 连接池最大阻塞等待时间(负值无限制)
- max-wait: 5000ms
+ max-wait: 5000
# 最大空闲链接数
max-idle: 8
# 最小空闲链接数
- min-idle: 0
+ min-idle: 1
mvc:
static-path-pattern: /static/**
# jwt过期时间,单位分钟
diff --git a/1.SSO单点登录/sso/src/main/resources/static/index.html b/1.SSO单点登录/sso/src/main/resources/static/index.html
index 03c92c2..c03e868 100644
--- a/1.SSO单点登录/sso/src/main/resources/static/index.html
+++ b/1.SSO单点登录/sso/src/main/resources/static/index.html
@@ -25,9 +25,10 @@
} else {
//有token,检查token是否还有效
$.get("/sso/checkJwt?token=" + localStorage.getItem("token"), function (res) {
- if (res.code === 1) {
+ console.log(res);
+ if (res.data === true) {
alert('已登录,跳转到回调页面');
- window.location.href = getUrlParam("redirect") + "&token=" + getToken();
+ window.location.href = getUrlParam("redirect") + "?token=" + localStorage.getItem("token");
} else {
goLogin();
}
diff --git a/1.SSO单点登录/sso/src/main/resources/static/login.html b/1.SSO单点登录/sso/src/main/resources/static/login.html
index 966ba19..115f37a 100644
--- a/1.SSO单点登录/sso/src/main/resources/static/login.html
+++ b/1.SSO单点登录/sso/src/main/resources/static/login.html
@@ -25,9 +25,9 @@
data: JSON.stringify({name: name, password: password}),
success: function (res) {
if (res.code === 1) {
- setToken(res.data);
+ localStorage.setItem("token", res.data);
alert("登录成功,跳转到回调地址");
- window.location.href = getUrlParam("redirect") + "&token=" + res.data;
+ window.location.href = getUrlParam("redirect") + "?token=" + res.data;
} else {
alert("账号密码错误");
}
diff --git a/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/controller/Main.java b/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/controller/Main.java
index 94656c6..1b9f50a 100644
--- a/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/controller/Main.java
+++ b/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/controller/Main.java
@@ -2,7 +2,6 @@ package com.example.sysa.controller;
import com.example.sysa.entity.ReturnEntity;
import com.example.sysa.entity.UserContext;
-import com.example.sysa.filter.LoginFilter;
import com.example.sysa.util.HttpClient;
import com.example.sysa.util.UserContextHolder;
import org.springframework.beans.factory.annotation.Value;
@@ -31,7 +30,7 @@ public class Main {
@RequestMapping("/logout")
public ReturnEntity logout() throws Exception {
UserContext context = UserContextHolder.get();
- HttpClient.get(serverHost + "/clearToken?token=" + context.getToken());
+ HttpClient.get(serverHost + "/inValid?token=" + context.getToken());
return null;
}
}
diff --git a/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/filter/LoginFilter.java b/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/filter/LoginFilter.java
index bc8c803..75c7803 100644
--- a/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/filter/LoginFilter.java
+++ b/1.SSO单点登录/sys-a/src/main/java/com/example/sysa/filter/LoginFilter.java
@@ -17,8 +17,6 @@ import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
/**
@@ -76,7 +74,7 @@ public class LoginFilter implements Filter {
return false;
}
JSONObject object = HttpClient.get(serverHost + "/checkJwt?token=" + jwt);
- return object.getInteger("code") == 1;
+ return object.getBoolean("data");
} catch (Exception e) {
logger.error("向认证中心请求失败", e);
return false;
diff --git a/1.SSO单点登录/sys-a/src/main/resources/static/index.html b/1.SSO单点登录/sys-a/src/main/resources/static/index.html
index 010b660..bd70646 100644
--- a/1.SSO单点登录/sys-a/src/main/resources/static/index.html
+++ b/1.SSO单点登录/sys-a/src/main/resources/static/index.html
@@ -2,7 +2,7 @@
- 系统A
+ 系统
@@ -14,16 +14,12 @@
diff --git a/1.SSO单点登录/sys-a/src/main/resources/static/redirect.html b/1.SSO单点登录/sys-a/src/main/resources/static/redirect.html
new file mode 100644
index 0000000..c599f32
--- /dev/null
+++ b/1.SSO单点登录/sys-a/src/main/resources/static/redirect.html
@@ -0,0 +1,24 @@
+
+
+
+
+ 系统
+
+
+
+
+
+
\ No newline at end of file
diff --git a/springcloud/configFolder/licensingservice/licensingservice-dev.yml b/springcloud/configFolder/licensingservice/licensingservice-dev.yml
new file mode 100644
index 0000000..75b95c2
--- /dev/null
+++ b/springcloud/configFolder/licensingservice/licensingservice-dev.yml
@@ -0,0 +1,2 @@
+server:
+ port: 10011
\ No newline at end of file
diff --git a/springcloud/configFolder/licensingservice/licensingservice-prod.yml b/springcloud/configFolder/licensingservice/licensingservice-prod.yml
new file mode 100644
index 0000000..e3e8735
--- /dev/null
+++ b/springcloud/configFolder/licensingservice/licensingservice-prod.yml
@@ -0,0 +1,3 @@
+server:
+ port: 10012
+
\ No newline at end of file
diff --git a/springcloud/configFolder/licensingservice/licensingservice.yml b/springcloud/configFolder/licensingservice/licensingservice.yml
new file mode 100644
index 0000000..6ad51a0
--- /dev/null
+++ b/springcloud/configFolder/licensingservice/licensingservice.yml
@@ -0,0 +1,5 @@
+server:
+ port: 10001
+spring:
+ application:
+ name: licensingservice
\ No newline at end of file
diff --git a/springcloud/configFolder/organizationservice/organizationservice-dev.yml b/springcloud/configFolder/organizationservice/organizationservice-dev.yml
new file mode 100644
index 0000000..821192d
--- /dev/null
+++ b/springcloud/configFolder/organizationservice/organizationservice-dev.yml
@@ -0,0 +1,2 @@
+server:
+ port: 10012
\ No newline at end of file
diff --git a/springcloud/configFolder/organizationservice/organizationservice-prod.yml b/springcloud/configFolder/organizationservice/organizationservice-prod.yml
new file mode 100644
index 0000000..e3e8735
--- /dev/null
+++ b/springcloud/configFolder/organizationservice/organizationservice-prod.yml
@@ -0,0 +1,3 @@
+server:
+ port: 10012
+
\ No newline at end of file
diff --git a/springcloud/configFolder/organizationservice/organizationservice.yml b/springcloud/configFolder/organizationservice/organizationservice.yml
new file mode 100644
index 0000000..451c207
--- /dev/null
+++ b/springcloud/configFolder/organizationservice/organizationservice.yml
@@ -0,0 +1,3 @@
+spring:
+ application:
+ name: organizationservice
\ No newline at end of file