结构整体优化

This commit is contained in:
winLsy
2018-01-23 22:33:46 +08:00
parent b7a1ca88ea
commit 9a40bcbd60
17 changed files with 87 additions and 279 deletions
@@ -16,6 +16,43 @@
</parent>
<dependencies>
<dependency>
<groupId>com.micro.fast</groupId>
<artifactId>boot-starter-util</artifactId>
<version>${micro.fast.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
@@ -2,9 +2,9 @@ package com.micro.fast.security.app.config.authorization2;
import com.micro.fast.security.app.config.component.MsAuthenticationFailureHandler;
import com.micro.fast.security.app.config.component.MsAuthenticationSuccessHandler;
import com.micro.fast.security.app.mobile.SmsCodeAuthenticationSecurityConfig;
import com.micro.fast.security.app.master.SecurityConstants;
import com.micro.fast.security.app.master.SecurityProperties;
import com.micro.fast.security.app.mobile.SmsCodeAuthenticationSecurityConfig;
import com.micro.fast.security.app.validate.code.ValidateCodeRepository;
import com.micro.fast.security.app.validate.code.filter.ValidateCodeFilter;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,7 +13,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.social.security.SpringSocialConfigurer;
/**
* OAuth2协议标准服务提供实现配置类,资源服务器的配置
@@ -43,8 +42,6 @@ public class AuthorizationResourceConfig extends ResourceServerConfigurerAdapter
@Autowired
private SmsCodeAuthenticationSecurityConfig smsCodeAuthenticationSecurityConfig;
@Autowired
private SpringSocialConfigurer springSocialConfigurer;
@Autowired
private ValidateCodeRepository validateCodeRepository;
@@ -79,9 +76,7 @@ public class AuthorizationResourceConfig extends ResourceServerConfigurerAdapter
, SecurityConstants.GET_VALIDATE_CODE_URI
, SecurityConstants.LOGIN_PAGE
, DRUID
, securityProperties.getBrowser().getHtml()
//用户注册或绑定的页面
, securityProperties.getBrowser().getSignUpUrl()
, "处理用户的注册绑定请求的url"
,"/social/signUp"
)
@@ -95,8 +90,6 @@ public class AuthorizationResourceConfig extends ResourceServerConfigurerAdapter
.csrf().disable()
//应用短信验证码登录的逻辑
.apply(smsCodeAuthenticationSecurityConfig)
.and()
//应用springSocial的配置,在接收到特殊的请求的时候进行社交登录.例如 /auth/qq 其中/auth是默认的前缀,qq是providerId
.apply(springSocialConfigurer);
.and();
}
}
@@ -1,7 +1,6 @@
package com.micro.fast.security.app.config.component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.micro.fast.security.core.browser.constant.LoginType;
import com.micro.fast.security.app.master.SecurityProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,14 +40,10 @@ public class MsAuthenticationFailureHandler extends SimpleUrlAuthenticationFailu
, HttpServletResponse httpServletResponse
, AuthenticationException e)
throws IOException, ServletException {
//根据配置参数判断身份认证失败后的返回类型进行响应
if (LoginType.JSON.equals(securityProperties.getBrowser().getLoginType())){
//根据配置参数判断身份认证失败后的返回类型进行响应
log.info("failure");
httpServletResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
httpServletResponse.setContentType("application/json;charset=UTF-8");
httpServletResponse.getWriter().write(objectMapper.writeValueAsString(e));
}else{
super.onAuthenticationFailure(httpServletRequest,httpServletResponse,e);
}
}
}
@@ -1,8 +1,13 @@
package com.micro.fast.security.app.master;
import lombok.Getter;
import lombok.Setter;
/**
* @author lsy
*/
@Getter
@Setter
public class OAuth2ClientProperties {
private String clientId;
@@ -13,44 +18,4 @@ public class OAuth2ClientProperties {
private String authorizedGrantTypes;
private String scopes;
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
public int getAccessTokenValiditySeconds() {
return accessTokenValiditySeconds;
}
public void setAccessTokenValiditySeconds(int accessTokenValiditySeconds) {
this.accessTokenValiditySeconds = accessTokenValiditySeconds;
}
public String getAuthorizedGrantTypes() {
return authorizedGrantTypes;
}
public void setAuthorizedGrantTypes(String authorizedGrantTypes) {
this.authorizedGrantTypes = authorizedGrantTypes;
}
public String getScopes() {
return scopes;
}
public void setScopes(String scopes) {
this.scopes = scopes;
}
}
@@ -1,9 +1,14 @@
package com.micro.fast.security.app.master;
import lombok.Getter;
import lombok.Setter;
/**
* aouth2属性配置
* @author lsy
*/
@Getter
@Setter
public class OAuth2Properties {
private OAuth2ClientProperties[] clients = new OAuth2ClientProperties[]{};
@@ -11,20 +16,4 @@ public class OAuth2Properties {
private String jwtSigningKey = "msjwt";
private String storeType = "jwt";
public String getJwtSigningKey() {
return jwtSigningKey;
}
public void setJwtSigningKey(String jwtSigningKey) {
this.jwtSigningKey = jwtSigningKey;
}
public OAuth2ClientProperties[] getClients() {
return clients;
}
public void setClients(OAuth2ClientProperties[] clients) {
this.clients = clients;
}
}
@@ -35,9 +35,4 @@ public interface SecurityConstants {
* 获取验证码请求的前缀
*/
String GET_VALIDATE_CODE_PREFIX = "/code/";
/**
* session失效的处理地址
*/
String DEFAULT_SESSION_INVALID_URL = "/ms-session-invalid.html";
}
@@ -1,73 +1,24 @@
package com.micro.fast.security.app.master;
import com.micro.fast.security.core.browser.config.param.BrowserProperties;
import com.micro.fast.security.app.validate.code.config.param.ValidateCodeProperties;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import javax.validation.Valid;
/**
* 用于从application.yml配置文件中加载以ms.security为前缀的配置属性, ms spring security 配置参数
* @author lsy
*/
@ConfigurationProperties(prefix = "ms.security")
@Configuration
@Getter
@Setter
public class SecurityProperties {
/**
* 浏览器身份认证配置
* 对带有校验注解的对象进行属性校验
*/
@Valid
private BrowserProperties browser = new BrowserProperties();
private ValidateCodeProperties code = new ValidateCodeProperties();
private Boolean createRememberTable = true;
private SessionProperties session = new SessionProperties();
private OAuth2Properties oauth2 = new OAuth2Properties();
public SessionProperties getSession() {
return session;
}
public void setSession(SessionProperties session) {
this.session = session;
}
public Boolean getCreateRememberTable() {
return createRememberTable;
}
public void setCreateRememberTable(Boolean createRememberTable) {
this.createRememberTable = createRememberTable;
}
public BrowserProperties getBrowser() {
return browser;
}
public void setBrowser(BrowserProperties browser) {
this.browser = browser;
}
public ValidateCodeProperties getCode() {
return code;
}
public void setCode(ValidateCodeProperties code) {
this.code = code;
}
public OAuth2Properties getOauth2() {
return oauth2;
}
public void setOauth2(OAuth2Properties oauth2) {
this.oauth2 = oauth2;
}
}
@@ -1,47 +0,0 @@
package com.micro.fast.security.app.master;
/**
* session处理的配置
* @author lsy
*/
public class SessionProperties {
/**
* 同一个系统中的最大session数,默认1
*/
private int maximumSessions = 1;
/**
* 达到最大session时,是否阻止新的登录请求,默认为false,不阻止,新的登录将老的登录
* 失效掉
*/
private boolean maxSessionPreventsLogin = false;
/**
* session失效的时候跳转的地址
*/
private String sessionInvalidUrl = SecurityConstants.DEFAULT_SESSION_INVALID_URL;
public int getMaximumSessions() {
return maximumSessions;
}
public void setMaximumSessions(int maximumSessions) {
this.maximumSessions = maximumSessions;
}
public boolean isMaxSessionPreventsLogin() {
return maxSessionPreventsLogin;
}
public void setMaxSessionPreventsLogin(boolean maxSessionPreventsLogin) {
this.maxSessionPreventsLogin = maxSessionPreventsLogin;
}
public String getSessionInvalidUrl() {
return sessionInvalidUrl;
}
public void setSessionInvalidUrl(String sessionInvalidUrl) {
this.sessionInvalidUrl = sessionInvalidUrl;
}
}
+6
View File
@@ -88,6 +88,12 @@
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
</dependency>
<!--配置提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -1,5 +1,7 @@
package com.micro.fast.common;
import com.micro.fast.common.config.param.MybatisParamConfig;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -12,7 +14,5 @@ import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = {"com.micro.fast.common"})
public class CommonApplication {
// public static void main(String[] args) {
// SpringApplication.run(CommonApplication.class, args);
// }
}
@@ -1,5 +1,7 @@
package com.micro.fast.common.config.param;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@@ -18,6 +20,8 @@ import java.util.ArrayList;
@AutoConfigureBefore(com.micro.fast.common.config.SqlSessionFactoryConfig.class)
@ConfigurationProperties(prefix = "mybatis")
@Validated
@Getter
@Setter
public class MybatisParamConfig {
/**
* pojo所在的包
@@ -34,27 +38,4 @@ public class MybatisParamConfig {
*/
private ArrayList<String> pageHelperProperties;
public String getTypeAliasesPackage() {
return typeAliasesPackage;
}
public void setTypeAliasesPackage(String typeAliasesPackage) {
this.typeAliasesPackage = typeAliasesPackage;
}
public String getMappers() {
return mappers;
}
public void setMappers(String mappers) {
this.mappers = mappers;
}
public ArrayList<String> getPageHelperProperties() {
return pageHelperProperties;
}
public void setPageHelperProperties(ArrayList<String> pageHelperProperties) {
this.pageHelperProperties = pageHelperProperties;
}
}
-4
View File
@@ -55,10 +55,6 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
-4
View File
@@ -101,10 +101,6 @@
<!--<artifactId>zipkin-autoconfigure-ui</artifactId>-->
<!--<scope>runtime</scope>-->
<!--</dependency>-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
@@ -1,58 +0,0 @@
package com.micro.fast.upms.service.impl;
import com.micro.fast.security.browser.service.UserService;
import com.micro.fast.upms.dao.UpmsUserMapper;
import com.micro.fast.upms.pojo.UpmsUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.social.security.SocialUser;
import org.springframework.social.security.SocialUserDetails;
import org.springframework.social.security.SocialUserDetailsService;
import org.springframework.stereotype.Service;
/**
* 后台权限管理系统用户操作接口实现类
* @author lsy
*/
@Service("userServiceImpl")
public class UpmsUserAuthenticationServiceImpl implements UserService,SocialUserDetailsService{
@Autowired
private UpmsUserMapper upmsUserMapper;
/**
* 安全框架根据用户的名称获取用户的信息
* @param username
* @return
*/
@Override
public User getUserByUsername(String username) {
UpmsUser upmsUser = upmsUserMapper.selectByUsername(username);
//将根据用户名查询出来的用户信息填入springSecurity的User对象中,默认是admin权限 todo 需要进行完善
/* User user = new User(username,upmsUser.getPassword(), AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));*/
//使用socialUser替换user.只有socialUser在才有getUserId方法,这样使用connect获取绑定第三方账号信息的时候才能用
SocialUser user = new SocialUser(username, upmsUser.getPassword()
, true, true, true, true
, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
return user;
}
/**
* springSocial根据用户的id获取用户的信息
* @param username 这里只要是用户的唯一标识就可以
* @return
* @throws UsernameNotFoundException
*/
@Override
public SocialUserDetails loadUserByUserId(String username) throws UsernameNotFoundException {
//使用upmsUserMapper获取到用户的
UpmsUser upmsUser = upmsUserMapper.selectByUsername(username);
//todo 需要完善
SocialUser socialUser = new SocialUser(username, upmsUser.getPassword()
, true, true, true, true
, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
return socialUser;
}
}
@@ -18,8 +18,6 @@ import com.micro.fast.common.response.BaseConst.*;
@Service(value = "upmsUserServiceImpl")
public class UpmsUserServiceImpl implements UpmsUserService {
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private UpmsUserMapper upmsUserMapper;
@@ -49,8 +47,8 @@ public class UpmsUserServiceImpl implements UpmsUserService {
,UserResponse.EMAIL_IS_HAVE.getMsg()));
}
upmsUser.setCtime(Long.valueOf(System.currentTimeMillis()));
//对密码进行加密处理
upmsUser.setPassword(passwordEncoder.encode(upmsUser.getPassword()));
//todo 对密码进行加密处理
int i = upmsUserMapper.insertSelective(upmsUser);
//是否插入成功
if (i<1){
-7
View File
@@ -70,13 +70,6 @@ eureka:
defaultZone: http://micro:fast@www.register1.com:10002/eureka/,http://micro:fast@www.register2.com:10004/eureka/ #配置所有的注册中心
instance:
hostname: www.upms.com
ms:
security:
browser:
loginType: JSON
html: /
createRememberTable: false
+18
View File
@@ -47,6 +47,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<lombok.plugin.version>1.16.6.1</lombok.plugin.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
@@ -80,6 +81,12 @@
<spring-boot-devtools.optional>true</spring-boot-devtools.optional>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<profiles>
<profile>
<id>ubuntu-dev</id>
@@ -304,6 +311,11 @@
<!--对插件的版本以及配置进行统一的控制-->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>${lombok.plugin.version}</version>
</plugin>
<!--生成mybatis dao 层 sql mapper的插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
@@ -389,5 +401,11 @@
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>