From 0d0840edd7dda707a194e4023c3222035fff5cce Mon Sep 17 00:00:00 2001
From: winLsy <18332763730@163.com>
Date: Sun, 21 Jan 2018 19:43:28 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90jwt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../AuthorizationProviderConfig.java | 6 +++---
.../boot-starter-security-demo/pom.xml | 8 +++++++-
.../demo/controller/RestfulController.java | 15 ++++++++++++++-
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java
index 2b1a00e..d374ac4 100644
--- a/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java
+++ b/boot-starter/boot-starter-security/boot-starter-security-app/src/main/java/com/micro/fast/security/app/config/authorization2/AuthorizationProviderConfig.java
@@ -74,7 +74,6 @@ public class AuthorizationProviderConfig extends AuthorizationServerConfigurerAd
endpoints.tokenEnhancer(enhancerChain)
.accessTokenConverter(jwtAccessTokenConverter);
}
- super.configure(endpoints);
}
/**
@@ -90,8 +89,9 @@ public class AuthorizationProviderConfig extends AuthorizationServerConfigurerAd
builder.withClient(client.getClientId()).secret(client.getClientSecret())
.accessTokenValiditySeconds(client.getAccessTokenValiditySeconds())
.authorizedGrantTypes("refresh_token","password")
- .scopes("all","read","write")
- .and();
+ //refreshToken的过期时间,refreshToken是用来在用户无感知的情况下换取token的
+ .refreshTokenValiditySeconds(2592000)
+ .scopes("all","read","write");
}
}
}
diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml b/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml
index 0713b3c..345feac 100644
--- a/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml
+++ b/boot-starter/boot-starter-security/boot-starter-security-demo/pom.xml
@@ -44,7 +44,13 @@
com.github.tomakehurst
wiremock
-
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.7.0
+
+
diff --git a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java
index 509af26..0e89cad 100644
--- a/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java
+++ b/boot-starter/boot-starter-security/boot-starter-security-demo/src/main/java/com/micro/fast/security/demo/controller/RestfulController.java
@@ -1,12 +1,19 @@
package com.micro.fast.security.demo.controller;
import com.fasterxml.jackson.annotation.JsonView;
+import com.micro.fast.security.core.master.SecurityProperties;
import com.micro.fast.security.demo.pojo.User;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
@@ -14,11 +21,17 @@ import java.util.List;
@RestController
@RequestMapping("/user")
public class RestfulController {
+ @Autowired
+ private SecurityProperties securityProperties;
@GetMapping("/{id:\\d+}")//使用正则表达式指定传入的参数只能是数字
@JsonView(User.DetailView.class)
- public User getInfo(@PathVariable("id") String id){
+ public User getInfo(@PathVariable("id") String id, HttpServletRequest request) throws UnsupportedEncodingException {
User user = new User("tom");
+ String authorization = request.getHeader("Authorization");
+ String token = StringUtils.substringAfter(authorization, "bearer ");
+ //解析jwt
+ Claims body = Jwts.parser().setSigningKey(securityProperties.getOauth2().getJwtSigningKey().getBytes("UTF-8")).parseClaimsJws(token).getBody();
return user;
}