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; }