From 47151f58c0919037e63ebba2840e77b4e74e3af5 Mon Sep 17 00:00:00 2001 From: liu_hao0813 Date: Wed, 14 Aug 2019 23:42:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=88=B0springboot2.1.7?= =?UTF-8?q?=EF=BC=8C=20springcloud=E5=8D=87=E7=BA=A7=E5=88=B0=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=9A=84Greenwich.SR2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.settings/org.eclipse.jdt.apt.core.prefs | 2 - .../ImoocAuthenticationSuccessHandler.java | 4 +- .../imooc/security/rbac/dto/AdminInfo.java | 2 +- .../rbac/service/impl/AdminServiceImpl.java | 8 ++-- .../service/impl/ResourceServiceImpl.java | 12 +++--- .../rbac/service/impl/RoleServiceImpl.java | 14 +++---- .../.settings/org.eclipse.jdt.apt.core.prefs | 2 - imooc-security-browser/pom.xml | 6 ++- .../ImoocAuthenticationSuccessHandler.java | 7 ++-- .../.settings/org.eclipse.jdt.apt.core.prefs | 2 - imooc-security-core/pom.xml | 32 +++++++++++++++ .../core/properties/QQProperties.java | 23 +++++++++-- .../core/properties/WeixinProperties.java | 23 +++++++++-- .../core/social/qq/config/QQAutoConfig.java | 40 +++++++++++-------- .../config/WeixinAutoConfiguration.java | 37 +++++++++++------ .../code/image/ImageCodeProcessor.java | 1 + .../validate/code/sms/SmsCodeProcessor.java | 2 + .../.settings/org.eclipse.jdt.apt.core.prefs | 2 - imooc-security-demo/pom.xml | 5 ++- .../src/main/java/com/imooc/dto/User.java | 2 +- .../security/DemoUserDetailsService.java | 2 +- .../java/com/imooc/web/config/WebConfig.java | 13 +++--- .../src/main/resources/application.properties | 8 ++-- imooc-security/pom.xml | 15 +++++-- 24 files changed, 176 insertions(+), 88 deletions(-) delete mode 100644 imooc-security-app/.settings/org.eclipse.jdt.apt.core.prefs delete mode 100644 imooc-security-browser/.settings/org.eclipse.jdt.apt.core.prefs delete mode 100644 imooc-security-core/.settings/org.eclipse.jdt.apt.core.prefs delete mode 100644 imooc-security-demo/.settings/org.eclipse.jdt.apt.core.prefs diff --git a/imooc-security-app/.settings/org.eclipse.jdt.apt.core.prefs b/imooc-security-app/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index 6dcd266..0000000 --- a/imooc-security-app/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=true diff --git a/imooc-security-app/src/main/java/com/imooc/security/app/authentication/ImoocAuthenticationSuccessHandler.java b/imooc-security-app/src/main/java/com/imooc/security/app/authentication/ImoocAuthenticationSuccessHandler.java index 27814bf..a0d257b 100644 --- a/imooc-security-app/src/main/java/com/imooc/security/app/authentication/ImoocAuthenticationSuccessHandler.java +++ b/imooc-security-app/src/main/java/com/imooc/security/app/authentication/ImoocAuthenticationSuccessHandler.java @@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.core.Authentication; -import org.springframework.security.crypto.codec.Base64; +import java.util.Base64; import org.springframework.security.oauth2.common.OAuth2AccessToken; import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException; import org.springframework.security.oauth2.provider.ClientDetails; @@ -103,7 +103,7 @@ private String[] extractAndDecodeHeader(String header, HttpServletRequest reques byte[] base64Token = header.substring(6).getBytes("UTF-8"); byte[] decoded; try { - decoded = Base64.decode(base64Token); + decoded = Base64.getDecoder().decode(base64Token); } catch (IllegalArgumentException e) { throw new BadCredentialsException("Failed to decode basic authentication token"); } diff --git a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/dto/AdminInfo.java b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/dto/AdminInfo.java index 639c7f5..a789a97 100644 --- a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/dto/AdminInfo.java +++ b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/dto/AdminInfo.java @@ -3,7 +3,7 @@ */ package com.imooc.security.rbac.dto; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.NotBlank; /** * @author zhailiang diff --git a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/AdminServiceImpl.java b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/AdminServiceImpl.java index 123967f..2534c6c 100644 --- a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/AdminServiceImpl.java +++ b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/AdminServiceImpl.java @@ -66,7 +66,7 @@ public AdminInfo create(AdminInfo adminInfo) { @Override public AdminInfo update(AdminInfo adminInfo) { - Admin admin = adminRepository.findOne(adminInfo.getId()); + Admin admin = adminRepository.findById(adminInfo.getId()).orElse(null); BeanUtils.copyProperties(adminInfo, admin); createRoleAdmin(adminInfo, admin); @@ -81,7 +81,7 @@ public AdminInfo update(AdminInfo adminInfo) { */ private void createRoleAdmin(AdminInfo adminInfo, Admin admin) { if(CollectionUtils.isNotEmpty(admin.getRoles())){ - roleAdminRepository.delete(admin.getRoles()); + roleAdminRepository.deleteAll(admin.getRoles()); } RoleAdmin roleAdmin = new RoleAdmin(); roleAdmin.setRole(roleRepository.getOne(adminInfo.getRoleId())); @@ -94,7 +94,7 @@ private void createRoleAdmin(AdminInfo adminInfo, Admin admin) { */ @Override public void delete(Long id) { - adminRepository.delete(id); + adminRepository.deleteById(id); } /* (non-Javadoc) @@ -102,7 +102,7 @@ public void delete(Long id) { */ @Override public AdminInfo getInfo(Long id) { - Admin admin = adminRepository.findOne(id); + Admin admin = adminRepository.findById(id).orElse(null); AdminInfo info = new AdminInfo(); BeanUtils.copyProperties(admin, info); return info; diff --git a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/ResourceServiceImpl.java b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/ResourceServiceImpl.java index 51f6d9b..af19824 100644 --- a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/ResourceServiceImpl.java +++ b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/ResourceServiceImpl.java @@ -35,7 +35,7 @@ public class ResourceServiceImpl implements ResourceService { */ @Override public ResourceInfo getTree(Long adminId) { - Admin admin = adminRepository.findOne(adminId); + Admin admin = adminRepository.findById(adminId).orElse(null); return resourceRepository.findByName("根节点").toTree(admin); } @@ -44,7 +44,7 @@ public ResourceInfo getTree(Long adminId) { */ @Override public ResourceInfo getInfo(Long id) { - Resource resource = resourceRepository.findOne(id); + Resource resource = resourceRepository.findById(id).orElse(null); ResourceInfo resourceInfo = new ResourceInfo(); BeanUtils.copyProperties(resource, resourceInfo); return resourceInfo; @@ -52,7 +52,7 @@ public ResourceInfo getInfo(Long id) { @Override public ResourceInfo create(ResourceInfo info) { - Resource parent = resourceRepository.findOne(info.getParentId()); + Resource parent = resourceRepository.findById(info.getParentId()).orElse(null); if(parent == null){ parent = resourceRepository.findByName("根节点"); } @@ -65,21 +65,21 @@ public ResourceInfo create(ResourceInfo info) { @Override public ResourceInfo update(ResourceInfo info) { - Resource resource = resourceRepository.findOne(info.getId()); + Resource resource = resourceRepository.findById(info.getId()).orElse(null); BeanUtils.copyProperties(info, resource); return info; } @Override public void delete(Long id) { - resourceRepository.delete(id); + resourceRepository.deleteById(id); } /* (non-Javadoc) * @see com.imooc.security.rbac.service.ResourceService#move(java.lang.Long, boolean) */ @Override public Long move(Long id, boolean up) { - Resource resource = resourceRepository.findOne(id); + Resource resource = resourceRepository.findById(id).orElse(null); int index = resource.getSort(); List childs = resource.getParent().getChilds(); for (int i = 0; i < childs.size(); i++) { diff --git a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/RoleServiceImpl.java b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/RoleServiceImpl.java index a00e28c..1f7f159 100644 --- a/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/RoleServiceImpl.java +++ b/imooc-security-authorize/src/main/java/com/imooc/security/rbac/service/impl/RoleServiceImpl.java @@ -57,7 +57,7 @@ public RoleInfo create(RoleInfo info) { */ @Override public RoleInfo update(RoleInfo info) { - Role role = roleRepository.findOne(info.getId()); + Role role = roleRepository.findById(info.getId()).orElse(null); BeanUtils.copyProperties(info, role); return info; } @@ -68,11 +68,11 @@ public RoleInfo update(RoleInfo info) { */ @Override public void delete(Long id) { - Role role = roleRepository.findOne(id); + Role role = roleRepository.findById(id).orElse(null); if(CollectionUtils.isNotEmpty(role.getAdmins())){ throw new RuntimeException("不能删除有下挂用户的角色"); } - roleRepository.delete(id); + roleRepository.deleteById(id); } // // @Override @@ -96,7 +96,7 @@ public void delete(Long id) { */ @Override public RoleInfo getInfo(Long id) { - Role role = roleRepository.findOne(id); + Role role = roleRepository.findById(id).orElse(null); RoleInfo info = new RoleInfo(); BeanUtils.copyProperties(role, info); return info; @@ -112,7 +112,7 @@ public List findAll() { @Override public String[] getRoleResources(Long id) { - Role role = roleRepository.findOne(id); + Role role = roleRepository.findById(id).orElse(null); Set resourceIds = new HashSet<>(); for (RoleResource resource : role.getResources()) { resourceIds.add(resource.getResource().getId().toString()); @@ -127,8 +127,8 @@ public String[] getRoleResources(Long id) { @Override public void setRoleResources(Long roleId, String resourceIds) { resourceIds = StringUtils.removeEnd(resourceIds, ","); - Role role = roleRepository.findOne(roleId); - roleResourceRepository.delete(role.getResources()); + Role role = roleRepository.findById(roleId).orElse(null); + roleResourceRepository.deleteAll(role.getResources()); String[] resourceIdArray = StringUtils.splitByWholeSeparatorPreserveAllTokens(resourceIds, ","); for (String resourceId : resourceIdArray) { RoleResource roleResource = new RoleResource(); diff --git a/imooc-security-browser/.settings/org.eclipse.jdt.apt.core.prefs b/imooc-security-browser/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index 6dcd266..0000000 --- a/imooc-security-browser/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=true diff --git a/imooc-security-browser/pom.xml b/imooc-security-browser/pom.xml index 9ea99d9..cbe9cbb 100644 --- a/imooc-security-browser/pom.xml +++ b/imooc-security-browser/pom.xml @@ -17,7 +17,11 @@ org.springframework.session - spring-session + spring-session-core + + + org.springframework.session + spring-session-data-redis diff --git a/imooc-security-browser/src/main/java/com/imooc/security/browser/authentication/ImoocAuthenticationSuccessHandler.java b/imooc-security-browser/src/main/java/com/imooc/security/browser/authentication/ImoocAuthenticationSuccessHandler.java index 0dfc8f2..fd3fa9a 100644 --- a/imooc-security-browser/src/main/java/com/imooc/security/browser/authentication/ImoocAuthenticationSuccessHandler.java +++ b/imooc-security-browser/src/main/java/com/imooc/security/browser/authentication/ImoocAuthenticationSuccessHandler.java @@ -42,12 +42,11 @@ public class ImoocAuthenticationSuccessHandler extends SavedRequestAwareAuthenti private RequestCache requestCache = new HttpSessionRequestCache(); - /* + /** * (non-Javadoc) * - * @see org.springframework.security.web.authentication. - * AuthenticationSuccessHandler#onAuthenticationSuccess(javax.servlet.http. - * HttpServletRequest, javax.servlet.http.HttpServletResponse, + * @see org.springframework.security.web.authentication.AuthenticationSuccessHandler + * onAuthenticationSuccess(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, * org.springframework.security.core.Authentication) */ @Override diff --git a/imooc-security-core/.settings/org.eclipse.jdt.apt.core.prefs b/imooc-security-core/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index 6dcd266..0000000 --- a/imooc-security-core/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=true diff --git a/imooc-security-core/pom.xml b/imooc-security-core/pom.xml index a912db5..27b02a1 100644 --- a/imooc-security-core/pom.xml +++ b/imooc-security-core/pom.xml @@ -10,6 +10,10 @@ + + org.springframework.boot + spring-boot-starter-web + org.springframework.cloud spring-cloud-starter-oauth2 @@ -25,38 +29,66 @@ mysql mysql-connector-java + 8.0.16 org.springframework.social spring-social-config + 2.0.0.M4 org.springframework.social spring-social-core + 2.0.0.M4 org.springframework.social spring-social-security + 2.0.0.M4 org.springframework.social spring-social-web + 2.0.0.M4 commons-lang commons-lang + 2.6 commons-collections commons-collections + 3.2.2 commons-beanutils commons-beanutils + 1.9.3 org.springframework.boot spring-boot-configuration-processor + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + \ No newline at end of file diff --git a/imooc-security-core/src/main/java/com/imooc/security/core/properties/QQProperties.java b/imooc-security-core/src/main/java/com/imooc/security/core/properties/QQProperties.java index dc83772..ebfd229 100644 --- a/imooc-security-core/src/main/java/com/imooc/security/core/properties/QQProperties.java +++ b/imooc-security-core/src/main/java/com/imooc/security/core/properties/QQProperties.java @@ -3,7 +3,6 @@ */ package com.imooc.security.core.properties; -import org.springframework.boot.autoconfigure.social.SocialProperties; /** * QQ登录配置项 @@ -12,13 +11,16 @@ * @author zhailiang * */ -public class QQProperties extends SocialProperties { +public class QQProperties { /** * 第三方id,用来决定发起第三方登录的url,默认是 qq。 */ private String providerId = "qq"; + private String appId; + private String appSecret; + public String getProviderId() { return providerId; } @@ -26,5 +28,20 @@ public String getProviderId() { public void setProviderId(String providerId) { this.providerId = providerId; } - + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getAppSecret() { + return appSecret; + } + + public void setAppSecret(String appSecret) { + this.appSecret = appSecret; + } } diff --git a/imooc-security-core/src/main/java/com/imooc/security/core/properties/WeixinProperties.java b/imooc-security-core/src/main/java/com/imooc/security/core/properties/WeixinProperties.java index 1a4ab96..c465474 100644 --- a/imooc-security-core/src/main/java/com/imooc/security/core/properties/WeixinProperties.java +++ b/imooc-security-core/src/main/java/com/imooc/security/core/properties/WeixinProperties.java @@ -3,21 +3,22 @@ */ package com.imooc.security.core.properties; -import org.springframework.boot.autoconfigure.social.SocialProperties; - /** * 微信登录配置项 * * @author zhailiang * */ -public class WeixinProperties extends SocialProperties { +public class WeixinProperties{ /** * 第三方id,用来决定发起第三方登录的url,默认是 weixin。 */ private String providerId = "weixin"; + private String appId; + private String appSecret; + /** * @return the providerId */ @@ -31,6 +32,20 @@ public String getProviderId() { public void setProviderId(String providerId) { this.providerId = providerId; } - + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getAppSecret() { + return appSecret; + } + + public void setAppSecret(String appSecret) { + this.appSecret = appSecret; + } } diff --git a/imooc-security-core/src/main/java/com/imooc/security/core/social/qq/config/QQAutoConfig.java b/imooc-security-core/src/main/java/com/imooc/security/core/social/qq/config/QQAutoConfig.java index 9ca4934..f4d4ecd 100644 --- a/imooc-security-core/src/main/java/com/imooc/security/core/social/qq/config/QQAutoConfig.java +++ b/imooc-security-core/src/main/java/com/imooc/security/core/social/qq/config/QQAutoConfig.java @@ -3,15 +3,18 @@ */ package com.imooc.security.core.social.qq.config; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter; -import org.springframework.context.annotation.Configuration; -import org.springframework.social.connect.ConnectionFactory; - import com.imooc.security.core.properties.QQProperties; import com.imooc.security.core.properties.SecurityProperties; import com.imooc.security.core.social.qq.connet.QQConnectionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.social.UserIdSource; +import org.springframework.social.config.annotation.ConnectionFactoryConfigurer; +import org.springframework.social.config.annotation.SocialConfigurerAdapter; /** * @author zhailiang @@ -19,22 +22,27 @@ */ @Configuration @ConditionalOnProperty(prefix = "imooc.security.social.qq", name = "app-id") -public class QQAutoConfig extends SocialAutoConfigurerAdapter { +public class QQAutoConfig extends SocialConfigurerAdapter { @Autowired private SecurityProperties securityProperties; - /* - * (non-Javadoc) - * - * @see - * org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter - * #createConnectionFactory() - */ + @Override - protected ConnectionFactory createConnectionFactory() { + public void addConnectionFactories(ConnectionFactoryConfigurer connectionFactoryConfigurer, Environment environment) { QQProperties qqConfig = securityProperties.getSocial().getQq(); - return new QQConnectionFactory(qqConfig.getProviderId(), qqConfig.getAppId(), qqConfig.getAppSecret()); + connectionFactoryConfigurer.addConnectionFactory(new QQConnectionFactory(qqConfig.getProviderId(), qqConfig.getAppId(), qqConfig.getAppSecret())); } + @Override + public UserIdSource getUserIdSource() { + return () -> { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication == null) { + throw new IllegalStateException("Unable to get a ConnectionRepository: no user signed in"); + } else { + return authentication.getName(); + } + }; + } } diff --git a/imooc-security-core/src/main/java/com/imooc/security/core/social/weixin/config/WeixinAutoConfiguration.java b/imooc-security-core/src/main/java/com/imooc/security/core/social/weixin/config/WeixinAutoConfiguration.java index 9802643..09453f3 100644 --- a/imooc-security-core/src/main/java/com/imooc/security/core/social/weixin/config/WeixinAutoConfiguration.java +++ b/imooc-security-core/src/main/java/com/imooc/security/core/social/weixin/config/WeixinAutoConfiguration.java @@ -6,9 +6,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.social.UserIdSource; +import org.springframework.social.config.annotation.ConnectionFactoryConfigurer; +import org.springframework.social.config.annotation.SocialConfigurerAdapter; import org.springframework.social.connect.ConnectionFactory; import org.springframework.web.servlet.View; @@ -25,25 +30,31 @@ */ @Configuration @ConditionalOnProperty(prefix = "imooc.security.social.weixin", name = "app-id") -public class WeixinAutoConfiguration extends SocialAutoConfigurerAdapter { +public class WeixinAutoConfiguration extends SocialConfigurerAdapter { @Autowired private SecurityProperties securityProperties; - /* - * (non-Javadoc) - * - * @see - * org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter - * #createConnectionFactory() - */ + @Override - protected ConnectionFactory createConnectionFactory() { + public void addConnectionFactories(ConnectionFactoryConfigurer connectionFactoryConfigurer, Environment environment) { WeixinProperties weixinConfig = securityProperties.getSocial().getWeixin(); - return new WeixinConnectionFactory(weixinConfig.getProviderId(), weixinConfig.getAppId(), - weixinConfig.getAppSecret()); + connectionFactoryConfigurer.addConnectionFactory(new WeixinConnectionFactory(weixinConfig.getProviderId(), weixinConfig.getAppId(), + weixinConfig.getAppSecret())); } - + + @Override + public UserIdSource getUserIdSource() { + return () -> { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication == null) { + throw new IllegalStateException("Unable to get a ConnectionRepository: no user signed in"); + } else { + return authentication.getName(); + } + }; + } + @Bean({"connect/weixinConnect", "connect/weixinConnected"}) @ConditionalOnMissingBean(name = "weixinConnectedView") public View weixinConnectedView() { diff --git a/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/image/ImageCodeProcessor.java b/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/image/ImageCodeProcessor.java index 75165f6..b779def 100644 --- a/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/image/ImageCodeProcessor.java +++ b/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/image/ImageCodeProcessor.java @@ -24,6 +24,7 @@ public class ImageCodeProcessor extends AbstractValidateCodeProcessor */ @Override protected void send(ServletWebRequest request, ImageCode imageCode) throws Exception { + request.getResponse().setContentType("image/jpg; charset=utf-8"); ImageIO.write(imageCode.getImage(), "JPEG", request.getResponse().getOutputStream()); } diff --git a/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/sms/SmsCodeProcessor.java b/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/sms/SmsCodeProcessor.java index 6dea82a..f65c75c 100644 --- a/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/sms/SmsCodeProcessor.java +++ b/imooc-security-core/src/main/java/com/imooc/security/core/validate/code/sms/SmsCodeProcessor.java @@ -32,6 +32,8 @@ protected void send(ServletWebRequest request, ValidateCode validateCode) throws String paramName = SecurityConstants.DEFAULT_PARAMETER_NAME_MOBILE; String mobile = ServletRequestUtils.getRequiredStringParameter(request.getRequest(), paramName); smsCodeSender.send(mobile, validateCode.getCode()); + request.getResponse().getWriter().println(validateCode.getCode()); + request.getResponse().flushBuffer(); } } diff --git a/imooc-security-demo/.settings/org.eclipse.jdt.apt.core.prefs b/imooc-security-demo/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index 6dcd266..0000000 --- a/imooc-security-demo/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=true diff --git a/imooc-security-demo/pom.xml b/imooc-security-demo/pom.xml index 7c542d5..4c7959e 100644 --- a/imooc-security-demo/pom.xml +++ b/imooc-security-demo/pom.xml @@ -15,13 +15,12 @@ imooc-security-browser ${imooc.security.version} - -