From e1ea387530a8d078b93a7225adbad4def2715772 Mon Sep 17 00:00:00 2001
From: maxf <1107047387@qq.com>
Date: Wed, 21 Nov 2018 15:03:12 +0800
Subject: [PATCH] =?UTF-8?q?1.1.8=20=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
UPDATE.md | 4 +--
pom.xml | 2 +-
yexuejc-springboot-base/pom.xml | 2 +-
.../ConsumerAuthenticationProvider.java | 27 +++++++--------
.../base/security/UserDetailsManager.java | 2 +-
.../springboot/base/security/inte/User.java | 2 ++
.../base/security/inte/UserService.java | 33 ++++++++++++++++---
.../base/security/domain/Consumer.java | 1 +
8 files changed, 50 insertions(+), 23 deletions(-)
diff --git a/UPDATE.md b/UPDATE.md
index 10fa902..11a930b 100644
--- a/UPDATE.md
+++ b/UPDATE.md
@@ -1,8 +1,8 @@
yexuejc-springboot 更新内容
-------------------
-#### version :1.1.6-1.1.7
-**time:2018-11-21 14:18:46**
+#### version :1.1.6-1.1.8
+**time:2018-11-21 15:03:01**
**branch:** master
**关联工程:**
```
diff --git a/pom.xml b/pom.xml
index a8f23c2..5a7fe01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.yexuejc.springboot
yexuejc-springboot-parent
- 1.1.7
+ 1.1.8
pom
${project.artifactId}
diff --git a/yexuejc-springboot-base/pom.xml b/yexuejc-springboot-base/pom.xml
index 70d8177..309787b 100644
--- a/yexuejc-springboot-base/pom.xml
+++ b/yexuejc-springboot-base/pom.xml
@@ -9,7 +9,7 @@
com.yexuejc.springboot
yexuejc-springboot-parent
- 1.1.7
+ 1.1.8
diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/ConsumerAuthenticationProvider.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/ConsumerAuthenticationProvider.java
index 323b064..5b8f62e 100644
--- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/ConsumerAuthenticationProvider.java
+++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/ConsumerAuthenticationProvider.java
@@ -178,15 +178,14 @@ public class ConsumerAuthenticationProvider extends AbstractUserDetailsAuthentic
throw notFound;
} else {
try {
- third(consumerToken, loadedUser, logtype);
+ return third(consumerToken, loadedUser, logtype);
} catch (Exception e) {
e.printStackTrace();
if (e instanceof ThirdPartyAuthorizationException) {
throw e;
}
- throw new ThirdPartyAuthorizationException("登录失败,请稍后重试");
+ throw new ThirdPartyAuthorizationException(e.getMessage());
}
- throw notFound;
}
} catch (Exception repositoryProblem) {
throw new InternalAuthenticationServiceException(
@@ -211,10 +210,10 @@ public class ConsumerAuthenticationProvider extends AbstractUserDetailsAuthentic
//其他方式登录:查询账号 没有->创建账号
//第三方登录
if (consumerToken != null && StrUtil.isNotEmpty(consumerToken.getOpenid())) {
- ApiVO apiVO = accountView.checkOpenId(consumerToken);
- if (apiVO.isSucc()) {
+ Object obj = accountView.checkOpenId(consumerToken);
+ if (obj != null) {
+
//已有账号
- Object obj = apiVO.getObject1(Object.class);
if (obj instanceof User) {
User consumer = (User) obj;
// 处理用户权限
@@ -229,7 +228,8 @@ public class ConsumerAuthenticationProvider extends AbstractUserDetailsAuthentic
logtype, System.currentTimeMillis());
return loadedUser;
} else if (obj instanceof UserDetails) {
- return (UserDetails) obj;
+ loadedUser = (UserDetails) obj;
+ return loadedUser;
} else {
throw new ClassConvertExeption("获取登录用户信息返回结果类型必须是com.yexuejc.springboot.base.security.inte.User实现类" +
"或者org.springframework.security.core.userdetails.UserDetails实现类" +
@@ -241,25 +241,26 @@ public class ConsumerAuthenticationProvider extends AbstractUserDetailsAuthentic
if (consumerToken != null) {
//没有->创建账号
consumerToken.isReg = true;
- ApiVO apiVO = accountView.addConsumer(consumerToken);
- if (apiVO.isSucc()) {
- Object obj = apiVO.getObject1(Object.class);
+ Object obj = accountView.addConsumer(consumerToken);
+ if (obj != null) {
if (obj instanceof User) {
User consumer = (User) obj;
loadedUser = display(consumerToken, consumer);
return loadedUser;
} else if (obj instanceof UserDetails) {
- return (UserDetails) obj;
+ loadedUser = (UserDetails) obj;
+ return loadedUser;
} else {
throw new ClassConvertExeption("获取登录用户信息返回结果类型必须是com.yexuejc.springboot.base.security.inte.User实现类" +
"或者org.springframework.security.core.userdetails.UserDetails实现类" +
"或者com.yexuejc.springboot.base.security.ConsumerUser继承类");
}
} else {
- throw new ThirdPartyAuthorizationException(apiVO.getMsg());
+ throw new ThirdPartyAuthorizationException("第三方登录失败");
}
+ } else {
+ throw new ThirdPartyAuthorizationException();
}
- return loadedUser;
}
private void prepareTimingAttackProtection() {
diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/UserDetailsManager.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/UserDetailsManager.java
index 888e62e..82c0271 100644
--- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/UserDetailsManager.java
+++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/UserDetailsManager.java
@@ -35,7 +35,7 @@ public class UserDetailsManager extends InMemoryUserDetailsManager {
return loadUser(username);
}
- protected ConsumerUser loadUser(String username) {
+ protected ConsumerUser loadUser(String username) throws UsernameNotFoundException{
Object user = userService.getConsumerByUserName(username);
if (user instanceof User) {
User consumer = (User) user;
diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/User.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/User.java
index c0aba9a..a3baddb 100644
--- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/User.java
+++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/User.java
@@ -3,6 +3,8 @@ package com.yexuejc.springboot.base.security.inte;
import java.util.List;
/**
+ * 登录用户接口
+ *
* @author maxf
* @version 1.0
* @ClassName User
diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/UserService.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/UserService.java
index 8024cbf..57bb6f9 100644
--- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/UserService.java
+++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/security/inte/UserService.java
@@ -2,9 +2,13 @@ package com.yexuejc.springboot.base.security.inte;
import com.yexuejc.base.pojo.ApiVO;
import com.yexuejc.springboot.base.constant.BizConsts;
+import com.yexuejc.springboot.base.exception.UserNotAuthoriayException;
import com.yexuejc.springboot.base.security.ConsumerToken;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
/**
+ * 用户登录处理接口
+ *
* @author maxf
* @version 1.0
* @ClassName UserService
@@ -14,11 +18,18 @@ import com.yexuejc.springboot.base.security.ConsumerToken;
public interface UserService {
/**
* 根据用户名到数据库查询用户
+ *
+ *
+ *
+ * 获取登录用户信息返回结果类型必须是
+ * {@link com.yexuejc.springboot.base.security.inte.User}实现类
+ * 或者{@link com.yexuejc.springboot.base.security.ConsumerUser}继承类
+ *
*
* @param username 登录账号
* @return
*/
- Object getConsumerByUserName(String username);
+ Object getConsumerByUserName(String username) throws UserNotAuthoriayException, UsernameNotFoundException;
/**
* 校验短信验证码=>短信登录
@@ -32,17 +43,29 @@ public interface UserService {
/**
* 校验第三方登录openid
+ *
+ * 获取登录用户信息返回结果类型必须是
+ * {@link com.yexuejc.springboot.base.security.inte.User}实现类
+ * 或者{@link org.springframework.security.core.userdetails.UserDetails}实现类
+ * 或者{@link com.yexuejc.springboot.base.security.ConsumerUser}继承类
+ *
*
* @param consumerToken 登录信息
- * @return apiVO.setObject1(User.class) 自己封装登录用户信息
+ * @return 自己封装登录用户信息
*/
- ApiVO checkOpenId(ConsumerToken consumerToken);
+ Object checkOpenId(ConsumerToken consumerToken);
/**
* 没有账号时根据登录信息创建账号
+ *
+ * 获取登录用户信息返回结果类型必须是
+ * {@link com.yexuejc.springboot.base.security.inte.User}实现类
+ * 或者{@link org.springframework.security.core.userdetails.UserDetails}实现类
+ * 或者{@link com.yexuejc.springboot.base.security.ConsumerUser}继承类
+ *
*
* @param consumerToken 登录信息
- * @return
+ * @return 自己封装登录用户信息
*/
- ApiVO addConsumer(ConsumerToken consumerToken);
+ Object addConsumer(ConsumerToken consumerToken);
}
diff --git a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/security/domain/Consumer.java b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/security/domain/Consumer.java
index 5ab3da0..bf7d8d2 100644
--- a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/security/domain/Consumer.java
+++ b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/security/domain/Consumer.java
@@ -238,6 +238,7 @@ public class Consumer extends Model implements User {
return this;
}
+ @Override
public List getRoles() {
return roles;
}