Переглянути джерело

提交自定义的authorityProvider

liuwenbin 6 роки тому
батько
коміт
198f368dc3
16 змінених файлів з 457 додано та 32 видалено
  1. 11 7
      common-security-starter/pom.xml
  2. 43 3
      common-security-starter/src/main/java/com.yihu.base.security/config/ResourceServerConfig.java
  3. 35 0
      common-security-starter/src/main/java/com.yihu.base.security/controller/ExceptionController.java
  4. 124 0
      common-security-starter/src/main/java/com.yihu.base.security/controller/TokenController.java
  5. 58 0
      common-security-starter/src/main/java/com.yihu.base.security/exception/ApiException.java
  6. 54 0
      common-security-starter/src/main/java/com.yihu.base.security/exception/MyControllerAdvice.java
  7. 1 1
      common-security-starter/src/main/java/com.yihu.base.security/sms/exception/ValidateCodeException.java
  8. 13 6
      common-security-starter/src/main/java/com.yihu.base.security/hander/BaseAuthenctiationFailureHandler.java
  9. 0 2
      common-security-starter/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationSecurityConfig.java
  10. 1 1
      common-security-starter/src/main/java/com.yihu.base.security/sms/filter/SmsvalidateCodeFilter.java
  11. 2 9
      common-security-starter/src/main/java/com.yihu.base.security/sms/process/SmsValidateCodeProcessor.java
  12. 1 2
      common-security-starter/src/main/java/com.yihu.base.security/sms/sender/DefaultSmsCodeSender.java
  13. 1 1
      common-security-starter/src/main/java/com.yihu.base.security/sms/sender/SmsCodeSender.java
  14. 55 0
      common-security-starter/src/main/java/com.yihu.base.security/vo/BaseEnvelop.java
  15. 43 0
      common-security-starter/src/main/java/com.yihu.base.security/vo/BaseEnvelopStatus.java
  16. 15 0
      common-security-starter/src/main/java/com.yihu.base.security/vo/BaseSecurityRequestMapping.java

+ 11 - 7
common-security-starter/pom.xml

@ -11,7 +11,7 @@
    </parent>
    <artifactId>common-security-starter</artifactId>
    <version>1.0.6</version>
    <version>1.0.7</version>
    <dependencies>
        <dependency>
@ -92,13 +92,17 @@
            <groupId>org.springframework.social</groupId>
            <artifactId>spring-social-web</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>com.yihu.jw</groupId>-->
            <!--<artifactId>common-exception</artifactId>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>com.yihu.jw</groupId>-->
            <!--<artifactId>common-rest-model</artifactId>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-exception</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-rest-model</artifactId>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
    </dependencies>
</project>

+ 43 - 3
common-security-starter/src/main/java/com.yihu.base.security/config/ResourceServerConfig.java

@ -6,10 +6,16 @@ import com.yihu.base.security.rbas.provider.AuthorizeConfigProviderManager;
import com.yihu.base.security.rbas.provider.UserNamePasswordAuthenticationProvider;
import com.yihu.base.security.sms.SmsCodeAuthenticationSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.ProviderManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.authentication.dao.ReflectionSaltSource;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.crypto.password.PasswordEncoder;
@ -26,6 +32,10 @@ import org.springframework.security.web.authentication.AuthenticationSuccessHand
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.util.Base64Utils;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.Arrays;
/**
 * Created by chenweida on 2017/12/4.
 */
@ -71,13 +81,18 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                .and()
                    .apply(smsCodeAuthenticationSecurityConfig); //添加自定义短信登陆;
        http.authenticationProvider(getMyAuthenticationProvider());
        //验证路径
        authorizeConfigProviderManager.config(http.authorizeRequests());
    }
    private AuthenticationProvider getMyAuthenticationProvider(){
        UserNamePasswordAuthenticationProvider userNamePasswordAuthenticationProvider = new UserNamePasswordAuthenticationProvider();
        userNamePasswordAuthenticationProvider.setUserDetailsService(userServiceProvider);
        userNamePasswordAuthenticationProvider.setHideUserNotFoundExceptions(false);
        userNamePasswordAuthenticationProvider.setPasswordEncoder(passwordEncoder);
        http.authenticationProvider(userNamePasswordAuthenticationProvider);
        //验证路径
        authorizeConfigProviderManager.config(http.authorizeRequests());
        return userNamePasswordAuthenticationProvider;
    }
    @Override
@ -103,4 +118,29 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
        return expressionHandler;
    }
    @Bean
    @ConditionalOnMissingClass
    public ReflectionSaltSource reflectionSaltSource() {
        ReflectionSaltSource reflectionSaltSource=new ReflectionSaltSource();
        reflectionSaltSource.setUserPropertyToUse("getSalt");
        return reflectionSaltSource;
    }
    @Inject
    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
        provider.setHideUserNotFoundExceptions(false);
        provider.setUserDetailsService(userServiceProvider);
        provider.setPasswordEncoder(passwordEncoder);
        provider.setSaltSource(reflectionSaltSource());
        return provider;
    }
//    @Autowired
//    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
//
//        auth.parentAuthenticationManager(new ProviderManager(new ArrayList<>(Arrays.asList(authenticationProvider()))));
//    }
}

+ 35 - 0
common-security-starter/src/main/java/com.yihu.base.security/controller/ExceptionController.java

@ -0,0 +1,35 @@
package com.yihu.base.security.controller;
import com.yihu.base.security.exception.ApiException;
import com.yihu.base.security.vo.BaseEnvelopStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Administrator on 2018/4/3 0003.
 */
@RestController
@RequestMapping("/security/exception")
public class ExceptionController {
    /**
     * 密码错误
     */
    @RequestMapping(value = "/badCredentialsException", method = RequestMethod.POST)
    public String badCredentialsException(@RequestParam(value = "msg", required = true) String msg) throws ApiException {
        throw new ApiException(BaseEnvelopStatus.status_10101.getName(), BaseEnvelopStatus.status_10101.getCode());
    }
    /**
     * 用户不存在
     */
    @RequestMapping(value = "/usernameNotFoundException", method = RequestMethod.POST)
    public String usernameNotFoundException(@RequestParam(value = "msg", required = true) String msg) throws ApiException {
        throw new ApiException(BaseEnvelopStatus.status_10100.getName(), BaseEnvelopStatus.status_10100.getCode());
    }
}

+ 124 - 0
common-security-starter/src/main/java/com.yihu.base.security/controller/TokenController.java

@ -0,0 +1,124 @@
package com.yihu.base.security.controller;
import com.yihu.base.security.rbas.ClientServiceProvider;
import com.yihu.base.security.vo.BaseEnvelop;
import com.yihu.base.security.vo.BaseSecurityRequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * Created by 刘文彬 on 2018/5/4.
 */
@RestController
@RequestMapping("/tokens")
//@Api(value = "权限token模块", description = "权限token模块")
public class TokenController {
    @Autowired
    private DefaultTokenServices defaultTokenServices;
    @Autowired
    private AuthenticationManager authenticationManager;
    @Autowired
    private ClientServiceProvider clientDetailsService;
//    @Autowired
//    private EmployFeign employFeign;
    private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_time)
//    @ApiOperation(value = "更新token过期时间", notes = "根据token更新token过期时间")
    public BaseEnvelop updateTokenExpiration(
//            @ApiParam(name = "expiration", value = "token过期时间,格式:yyyy-mm-dd HH:mm:ss", required = true)
                     @RequestParam(value = "expiration", required = true) String expiration,
//                                             @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
                     @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue) throws ParseException {
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
        if(token!=null){
            try {
                token.setExpiration(formatter.parse(expiration));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second)
//    @ApiOperation(value = "延长token的过期时间", notes = "根据token延长token的过期时间")
    public BaseEnvelop updateTokenExpiration(
//            @ApiParam(name = "seconds", value = "延长token过期时间分钟数", required = true)
                                             @RequestParam(value = "seconds", required = true) int seconds,
//                                             @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
                                             @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
        if(token!=null){
            token.setExpiration(new Date(System.currentTimeMillis() + (seconds * 1000L)));
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration)
//    @ApiOperation(value = "设置token过期", notes = "设置token过期")
    public BaseEnvelop updateTokenExpiration2(HttpServletRequest request, HttpServletResponse response,
//                                              @ApiParam(name = "authHeaderValue", value = "登录的token", required = true)
                                              @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){
        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue);
        if(token!=null){
            token.setExpiration(new Date());
            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
        }
        return BaseEnvelop.getError("token 无效!");
    }
//    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second2)
//    @ApiOperation(value = "设置token过期", notes = "设置token过期")
//    public BaseEnvelop updateTokenExpiration3(HttpServletRequest request, HttpServletResponse response,
//                                              @ApiParam(name = "mobileSaas", value = "mobile和saas组合,逗号分隔", required = true)
//                                              @RequestParam(value = "mobileSaas", required = true) String mobileSaas){
//
//        String[] sp = mobileSaas.split(",");
//        String phone = sp[0];
//        String saasId = sp[1];
//        Envelop envelop = employFeign.getEmployeeByPhoneAndSaasId(phone,saasId);
//        Map baseEmployDO =  (Map)envelop.getObj();
//        if(baseEmployDO.isEmpty()){
//            return BaseEnvelop.getError("该用户不存在!");
//        }
//        UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(
//                mobileSaas, baseEmployDO.get("password"));
//
//        // Allow subclasses to set the "details" property
//        authRequest.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
//
//        Authentication authentication = authenticationManager.authenticate(authRequest);
//        ClientDetails clientDetails = clientDetailsService.loadClientByClientId(saasId);
//        TokenRequest tokenRequest = new TokenRequest(MapUtils.EMPTY_MAP, saasId, clientDetails.getScope(), "custom_password");
//
//        OAuth2Request oAuth2Request = tokenRequest.createOAuth2Request(clientDetails);
//
//        OAuth2Authentication oAuth2Authentication = new OAuth2Authentication(oAuth2Request, authentication);
//
//        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.getAccessToken(oAuth2Authentication);
//        if(token!=null){
//            token.setExpiration(new Date());
//            return BaseEnvelop.getSuccess("token 过期时间设置成功!");
//        }
//        return BaseEnvelop.getError("token 无效!");
//    }
}

+ 58 - 0
common-security-starter/src/main/java/com.yihu.base.security/exception/ApiException.java

@ -0,0 +1,58 @@
package com.yihu.base.security.exception;
/**
 * API 异常。使用错误代码初始化,并可接收用于补充错误消息的参数。
 * 用于描述错误代码的信息配置在各服务配置文件中,并由服务配置中心统一管理。
 * <p>
 * 错误描述结构,结构(字段errors对资源而言,REST规范错误不包含此结构):
 * {
 * "message": "Validation Failed",
 * "document_url": "https://ehr.yihu.com/docs/api/somewhere"
 * "errors": [
 * {
 * "resource": "User",
 * "field": "title",
 * "code": "missing_field"
 * }
 * ]
 * }
 *
 * @author Sand
 * @version 1.0
 * @created 2015.12.20 16:05
 */
public class ApiException extends RuntimeException {
    private Integer errorCode = -10000;
    public Integer getErrorCode() {
        return errorCode;
    }
    public void setErrorCode(Integer errorCode) {
        this.errorCode = errorCode;
    }
    public ApiException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
    public ApiException() {
    }
    public ApiException(String message) {
        super(message);
    }
    public ApiException(String message, Integer errorCode) {
        super(message);
        this.errorCode = errorCode;
    }
    public ApiException(String message, Throwable cause) {
        super(message, cause);
    }
    public ApiException(Throwable cause) {
        super(cause);
    }
}

+ 54 - 0
common-security-starter/src/main/java/com.yihu.base.security/exception/MyControllerAdvice.java

@ -0,0 +1,54 @@
package com.yihu.base.security.exception;
import com.yihu.base.security.vo.BaseEnvelop;
import com.yihu.base.security.vo.BaseEnvelopStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.ParseException;
/**
 * 统一异常处理器
 * Created by 刘文彬 on 2018/5/9.
 */
@ControllerAdvice
public class MyControllerAdvice {
    @Autowired
    private Tracer tracer;
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @ResponseBody
    @ExceptionHandler(value = ApiException.class)
    public BaseEnvelop myErrorHandler(ApiException ex) {
        tracer.getCurrentSpan().logEvent(ex.getMessage());
        logger.error(ex.getMessage());
        return BaseEnvelop.getError(ex.getMessage(), ex.getErrorCode());
    }
    @ResponseBody
    @ExceptionHandler(value = ParseException.class)
    public BaseEnvelop myErrorHandler(ParseException ex) {
        tracer.getCurrentSpan().logEvent(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
        logger.error(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
        return BaseEnvelop.getError(BaseEnvelopStatus.status_10200.getName()+ex.getMessage(), BaseEnvelopStatus.status_10200.getCode());
    }
//
//    @ResponseBody
//    @ExceptionHandler(value = UsernameNotFoundException.class)
//    public BaseEnvelop myErrorHandler(UsernameNotFoundException ex) {
//        tracer.getCurrentSpan().logEvent(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
//        logger.error(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
//        return BaseEnvelop.getError(BaseEnvelopStatus.status_10200.getName()+ex.getMessage(), BaseEnvelopStatus.status_10200.getCode());
//    }
}

+ 1 - 1
common-security-starter/src/main/java/com.yihu.base.security/sms/exception/ValidateCodeException.java

@ -1,7 +1,7 @@
/**
 * 
 */
package com.yihu.base.security.sms.exception;
package com.yihu.base.security.exception;
import org.springframework.security.core.AuthenticationException;

+ 13 - 6
common-security-starter/src/main/java/com.yihu.base.security/hander/BaseAuthenctiationFailureHandler.java

@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
import org.springframework.social.ApiException;
import org.springframework.stereotype.Component;
@ -30,7 +31,7 @@ public class BaseAuthenctiationFailureHandler extends SimpleUrlAuthenticationFai
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
//    @Autowired
//    private ExceptionController exceptionController;
@ -39,11 +40,17 @@ public class BaseAuthenctiationFailureHandler extends SimpleUrlAuthenticationFai
                                        AuthenticationException exception) throws IOException, ServletException{
        logger.info("登录失败");
//        throw exception;
//        request.getRequestDispatcher("/security/exception/badCredentialsException?msg="+exception.getMessage()).forward(request,response);
        response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().write(objectMapper.writeValueAsString(new SimpleResponse(exception.getMessage())));
        if(exception instanceof UsernameNotFoundException){
            request.getRequestDispatcher("/security/exception/usernameNotFoundException?msg="+exception.getMessage()).forward(request,response);
        }else if(exception instanceof BadCredentialsException){
            request.getRequestDispatcher("/security/exception/badCredentialsException?msg="+exception.getMessage()).forward(request,response);
        }
//        response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
//        response.setContentType("application/json;charset=UTF-8");
//        response.getWriter().write(objectMapper.writeValueAsString(new SimpleResponse(exception.getMessage())));
    }
}

+ 0 - 2
common-security-starter/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationSecurityConfig.java

@ -46,8 +46,6 @@ public class SmsCodeAuthenticationSecurityConfig extends SecurityConfigurerAdapt
        http.authenticationProvider(smsCodeAuthenticationProvider)
                .addFilterAfter(smsCodeAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)//在账号密码验证过滤器之后添加短信验证码过滤器
                .addFilterBefore(smsvalidateCodeFilter,SmsCodeAuthenticationFilter.class); //添加短信验证码登陆过滤器
        ;
    }
}

+ 1 - 1
common-security-starter/src/main/java/com.yihu.base.security/sms/filter/SmsvalidateCodeFilter.java

@ -4,7 +4,7 @@
package com.yihu.base.security.sms.filter;
import com.yihu.base.security.properties.SecurityProperties;
import com.yihu.base.security.sms.exception.ValidateCodeException;
import com.yihu.base.security.exception.ValidateCodeException;
import com.yihu.base.security.sms.process.SmsValidateCodeProcessor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.InitializingBean;

+ 2 - 9
common-security-starter/src/main/java/com.yihu.base.security/sms/process/SmsValidateCodeProcessor.java

@ -1,16 +1,10 @@
/**
 *
 */
package com.yihu.base.security.sms.process;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.yihu.base.security.properties.SecurityProperties;
import com.yihu.base.security.sms.exception.ValidateCodeException;
import com.yihu.base.security.exception.ValidateCodeException;
import com.yihu.base.security.sms.generator.SmsValidateCodeGenerator;
import com.yihu.base.security.sms.generator.ValidateCodeGenerator;
import com.yihu.base.security.sms.sender.SmsCodeSender;
import com.yihu.base.security.sms.vo.ValidateCode;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
@ -18,8 +12,7 @@ import org.springframework.stereotype.Component;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.context.request.ServletWebRequest;
import java.util.Map;
import net.sf.json.JSONObject;
/**
 * @author chenweida

+ 1 - 2
common-security-starter/src/main/java/com.yihu.base.security/sms/sender/DefaultSmsCodeSender.java

@ -3,10 +3,9 @@
 */
package com.yihu.base.security.sms.sender;
import com.yihu.base.security.sms.exception.ValidateCodeException;
import com.yihu.base.security.exception.ValidateCodeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
 * @author chenweida

+ 1 - 1
common-security-starter/src/main/java/com.yihu.base.security/sms/sender/SmsCodeSender.java

@ -3,7 +3,7 @@
 */
package com.yihu.base.security.sms.sender;
import com.yihu.base.security.sms.exception.ValidateCodeException;
import com.yihu.base.security.exception.ValidateCodeException;
/**
 * @author chenweida

+ 55 - 0
common-security-starter/src/main/java/com.yihu.base.security/vo/BaseEnvelop.java

@ -0,0 +1,55 @@
package com.yihu.base.security.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
 * Created by chenweida on 2018/1/16.
 */
@JsonInclude(JsonInclude.Include.ALWAYS)
public class BaseEnvelop {
    protected String message;
    protected Integer status = 200;
    public BaseEnvelop() {
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public static BaseEnvelop getSuccess(String message) {
        BaseEnvelop envelop = new BaseEnvelop();
        envelop.setMessage(message);
        envelop.setStatus(200);
        return envelop;
    }
    public static BaseEnvelop getError(String message, int errorCode) {
        BaseEnvelop envelop = new BaseEnvelop();
        envelop.setMessage(message);
        envelop.setStatus(errorCode);
        return envelop;
    }
    public static BaseEnvelop getError(String message) {
        BaseEnvelop envelop = new BaseEnvelop();
        envelop.setMessage(message);
        envelop.setStatus(-1);
        return envelop;
    }
}

+ 43 - 0
common-security-starter/src/main/java/com.yihu.base.security/vo/BaseEnvelopStatus.java

@ -0,0 +1,43 @@
package com.yihu.base.security.vo;
/**
 * Created by chenweida on 2018/5/8 0008.
 */
public enum BaseEnvelopStatus {
    success("200请求成功", 200),
    system_error("-10000系统错误",-10000),
    //------------------登陆 权限相关 start ------------------
    status_10100("10100账号不存在", 10100),
    status_10101("10101密码错误", 10101),
    status_10102("10102用户未登录", 10102),
    status_10103("10103登陆超时", 10103),
    status_10104("10104账号被挤", 10104),
    status_10105("10105账号没权限", 10105),
    status_10106("10106账号已存在", 10106),
    //------------------登陆 权限相关 end ------------------
    status_10200("格式转换错误",10200);
    BaseEnvelopStatus(String name, Integer code) {
        this.name = name;
        this.code = code;
    }
    private String name;
    private Integer code;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
}

+ 15 - 0
common-security-starter/src/main/java/com.yihu.base.security/vo/BaseSecurityRequestMapping.java

@ -0,0 +1,15 @@
package com.yihu.base.security.vo;
/**
 * Created by 刘文彬 on 2018/5/4.
 */
public class BaseSecurityRequestMapping {
    public static final String api_common="/security";
    public static class BaseToken {
        public static final String api_update_token_expiration_time = api_common+"/update/tokenExpiration/time";
        public static final String api_update_token_expiration_second = api_common+"/update/tokenExpiration/second";
        public static final String api_update_token_expiration_second2 = api_common+"/update/tokenExpiration/second2";
        public static final String api_update_token_expiration = api_common+"/update/tokenExpiration";
    }
}