From cf6ef0de493304de7575b079870b88a35839f7ea Mon Sep 17 00:00:00 2001
From: "Yangkai.Shen" <237497819@qq.com>
Date: Sat, 31 Aug 2019 13:12:19 +0800
Subject: [PATCH] =?UTF-8?q?:memo:=20=E6=9B=B4=E6=96=B0=20README.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 314 +++++++++++++++++++++++++++++++++---------------------
1 file changed, 194 insertions(+), 120 deletions(-)
diff --git a/README.md b/README.md
index 6b0b539..83fb3dd 100644
--- a/README.md
+++ b/README.md
@@ -22,13 +22,15 @@ https://github.com/xkcoding/justauth-spring-boot-starter-demo
## 快速开始
+### 1. 基础配置
+
- 引用依赖
```xml
com.xkcoding
justauth-spring-boot-starter
- 1.0.1
+ 1.0.2-SNAPSHOT
```
@@ -42,6 +44,8 @@ justauth:
client-id: 10**********6
client-secret: 1f7d08**********5b7**********29e
redirect-uri: http://oauth.xkcoding.com/demo/oauth/qq/callback
+ cache:
+ type: default
```
- 然后就开始玩耍吧~
@@ -83,134 +87,170 @@ public class TestController {
}
```
-- 如果需要自定义 State 的缓存(此处举例 Redis,其余缓存同理)
-
- > 1. 自定义缓存实现 `AuthStateCache` 接口
- > 2. 将自定义缓存加入 Spring 容器
-
- 1.添加Redis依赖
-
- ```xml
-
- org.springframework.boot
- spring-boot-starter-data-redis
-
-
-
-
- org.apache.commons
- commons-pool2
-
- ```
-
- 2.自定义缓存 `RedisStateCache`
-
- ```java
- /**
- *
- * Redis作为JustAuth的State的缓存
- *
- *
- * @author yangkai.shen
- * @date Created in 2019-08-02 15:10
- */
- @RequiredArgsConstructor
- public class RedisStateCache implements AuthStateCache {
- private final RedisTemplate redisTemplate;
- private static final long DEF_TIMEOUT = 3 * 60 * 1000;
-
- /**
- * 存入缓存
- *
- * @param key 缓存key
- * @param value 缓存内容
- */
- @Override
- public void cache(String key, String value) {
- this.cache(key, value, DEF_TIMEOUT);
- }
-
- /**
- * 存入缓存
- *
- * @param key 缓存key
- * @param value 缓存内容
- * @param timeout 指定缓存过期时间(毫秒)
- */
- @Override
- public void cache(String key, String value, long timeout) {
- redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.MILLISECONDS);
- }
-
- /**
- * 获取缓存内容
- *
- * @param key 缓存key
- * @return 缓存内容
- */
- @Override
- public String get(String key) {
- return redisTemplate.opsForValue().get(key);
- }
-
- /**
- * 是否存在key,如果对应key的value值已过期,也返回false
- *
- * @param key 缓存key
- * @return true:存在key,并且value没过期;false:key不存在或者已过期
- */
- @Override
- public boolean containsKey(String key) {
- Long expire = redisTemplate.getExpire(key, TimeUnit.MILLISECONDS);
- if (expire == null) {
- expire = 0L;
- }
- return expire > 0;
- }
- }
- ```
-
- 3.自动装配 `JustAuthConfig`
-
- ```java
- /**
- *
- * JustAuth配置类
- *
- *
- * @author yangkai.shen
- * @date Created in 2019-08-02 15:08
- */
- @Configuration
- public class JustAuthConfig {
- /**
- * 默认情况下的模板只能支持RedisTemplate,也就是只能存入字符串,因此支持序列化
- */
- @Bean
- public RedisTemplate redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {
- RedisTemplate template = new RedisTemplate<>();
- template.setKeySerializer(new StringRedisSerializer());
- template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
- template.setConnectionFactory(redisConnectionFactory);
- return template;
- }
-
- @Bean
- public AuthStateCache authStateCache(RedisTemplate redisCacheTemplate) {
- return new RedisStateCache(redisCacheTemplate);
- }
-
- }
- ```
+### 2. 缓存配置
+
+> starter 内置了2种缓存实现,一种是上面的默认实现,另一种是基于 Redis 的缓存实现。
+>
+> 当然了,你也可以自定义实现你自己的缓存。
+
+#### 2.1. 默认缓存实现
+
+在配置文件配置如下内容即可
+
+```yaml
+justauth:
+ cache:
+ type: default
+```
+
+#### 2.2. Redis 缓存实现
+
+1.添加 Redis 相关依赖
+
+```xml
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+
+
+ org.apache.commons
+ commons-pool2
+
+```
+
+2.配置文件配置如下内容即可
+
+```yaml
+justauth:
+ cache:
+ type: redis
+ # 缓存前缀,目前只对redis缓存生效,默认 JUSTAUTH::STATE::
+ prefix: ''
+ # 超时时长,目前只对redis缓存生效,默认3分钟
+ timeout: 1h
+spring:
+ redis:
+ host: localhost
+ # 连接超时时间(记得添加单位,Duration)
+ timeout: 10000ms
+ # Redis默认情况下有16个分片,这里配置具体使用的分片
+ # database: 0
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 8
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
+ max-wait: -1ms
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 8
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 0
+```
+
+#### 2.3. 自定义缓存实现
+
+1.配置文件配置如下内容
+
+```yaml
+justauth:
+ cache:
+ type: custom
+```
+
+2.自定义缓存实现 `AuthStateCache` 接口
+
+```java
+/**
+ *
+ * 自定义缓存实现
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/8/31 12:53
+ */
+public class MyAuthStateCache implements AuthStateCache {
+ /**
+ * 存入缓存
+ *
+ * @param key 缓存key
+ * @param value 缓存内容
+ */
+ @Override
+ public void cache(String key, String value) {
+ // TODO: 自定义存入缓存
+ }
+
+ /**
+ * 存入缓存
+ *
+ * @param key 缓存key
+ * @param value 缓存内容
+ * @param timeout 指定缓存过期时间(毫秒)
+ */
+ @Override
+ public void cache(String key, String value, long timeout) {
+ // TODO: 自定义存入缓存
+ }
+
+ /**
+ * 获取缓存内容
+ *
+ * @param key 缓存key
+ * @return 缓存内容
+ */
+ @Override
+ public String get(String key) {
+ // TODO: 自定义获取缓存内容
+ return null;
+ }
+
+ /**
+ * 是否存在key,如果对应key的value值已过期,也返回false
+ *
+ * @param key 缓存key
+ * @return true:存在key,并且value没过期;false:key不存在或者已过期
+ */
+ @Override
+ public boolean containsKey(String key) {
+ // TODO: 自定义判断key是否存在
+ return false;
+ }
+}
+```
+
+3.自动装配 `JustAuthConfig`
+
+```java
+/**
+ *
+ * 自定义缓存装配
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/8/31 12:29
+ */
+@Configuration
+public class AuthStateConfiguration {
+ @Bean
+ public AuthStateCache authStateCache() {
+ return new MyAuthStateCache();
+ }
+}
+```
## 附录
+### 1. 配置
+
`justauth` 配置列表
| 属性名 | 类型 | 默认值 | 可选项 | 描述 |
| ------------------ | ------------------------------------------------------------ | ------ | ---------- | ----------------- |
| `justauth.enabled` | `boolean` | true | true/false | 是否启用 JustAuth |
| `justauth.type` | `java.util.Map` | 无 | | JustAuth 配置 |
+| `justauth.cache` | `com.xkcoding.justauth.properties.CacheProperties` | | | JustAuth缓存配置 |
`justauth.type` 配置列表
@@ -219,3 +259,37 @@ public class TestController {
| `justauth.type.keys` | `justauth.type` 是 `Map` 格式的,key 的取值请参考 [`AuthSource`](https://github.com/zhangyd-c/JustAuth/blob/master/src/main/java/me/zhyd/oauth/config/AuthSource.java) |
| `justauth.type.keys.values` | `justauth.type` 是 `Map` 格式的,value 的取值请参考 [`AuthConfig`](https://github.com/zhangyd-c/JustAuth/blob/master/src/main/java/me/zhyd/oauth/config/AuthConfig.java) |
+`justauth.cache` 配置列表
+
+| 属性名 | 类型 | 默认值 | 可选项 | 描述 |
+| ------------------------ | ------------------------------------------------------------ | ----------------- | -------------------- | ------------------------------------------------------------ |
+| `justauth.cache.type` | `com.xkcoding.justauth.properties.CacheProperties.CacheType` | default | default/redis/custom | 缓存类型,default使用JustAuth默认的缓存实现,redis使用默认的redis缓存实现,custom用户自定义缓存实现 |
+| `justauth.cache.prefix` | `string` | JUSTAUTH::STATE:: | | 缓存前缀,目前只对redis缓存生效,默认 JUSTAUTH::STATE:: |
+| `justauth.cache.timeout` | `java.time.Duration` | 3分钟 | | 超时时长,目前只对redis缓存生效,默认3分钟 |
+
+### 2. 私服
+
+如果想体验快照版本,需要在 `pom.xml` 文件里添加如下配置
+
+```xml
+
+
+
+ aliyun
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public
+
+
+
+ xkcoding-nexus
+ xkcoding nexus
+ https://nexus.xkcoding.com/repository/maven-public/
+
+ true
+
+
+ true
+
+
+
+```
\ No newline at end of file