자바 로그 탈 민 프레임 워 크 sensitive-v 0.0.4 시스템 내 에 일반적인 주 해 를 설치 하고 사용자 정의 주 해 를 지원 합 니 다.

3961 단어 runtime자바
프로젝트 소개
로그 탈 민 은 흔히 볼 수 있 는 안전 수요 이다.일반적인 도구 류 방법 을 바탕 으로 하 는 방식 은 코드 에 대한 침입 성 이 너무 강하 다.작성 하기 도 귀 찮 고.
본 프로젝트 는 주 해 를 바탕 으로 하 는 방식 을 제공 하고 흔히 볼 수 있 는 탈 민 방식 을 내장 하여 개발 에 편리 하 다.
특성
  • 주석 기반 로그 탈 민.
  • 정책 구현 을 사용자 정의 할 수 있 습 니 다.정책 발효 조건.
  • 흔히 볼 수 있 는 탈 민 내장 방안.
  • 자바 딥 복사,원본 대상 은 어떠한 인터페이스 도 실현 하지 않 습 니 다.
  • 사용자 정의 주 해 를 지원 합 니 다.

  • 사용자 정의 주석
    maven 가 져 오기
    
        com.github.houbb
        sensitive-core
        0.0.4
    

    사용자 정의 주석
    v 0.0.4 새로운 기능.사용자 정의 조건 설명 과 정책 설명 을 허용 합 니 다.
    케이스
    사용자 정의 주석
  • 전략 탈 민
  • /**
     *          
     * @author binbin.hou
     * date 2019/1/17
     * @since 0.0.4
     */
    @Inherited
    @Documented
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @SensitiveStrategy(CustomPasswordStrategy.class)
    public @interface SensitiveCustomPasswordStrategy {
    }
  • 탈 민 발효 조건
  • /**
     *              
     * @author binbin.hou
     * date 2019/1/17
     * @since 0.0.4
     */
    @Inherited
    @Documented
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @SensitiveCondition(ConditionFooPassword.class)
    public @interface SensitiveCustomPasswordCondition{
    }
  • TIPS
  • @SensitiveStrategy정책 을 단독으로 사용 할 때 기본 값 이 적 용 됩 니 다.@SensitiveCondition주석 이 있 으 면 조건 이 만족 할 때 만 탈 민 전략 을 실행 할 수 있 습 니 다.@SensitiveCondition시스템 내 에 주석 과 사용자 정의 주석 만 적 용 됩 니 다.@Sensitive자신 만 의 전략 발효 조건 이 있 기 때 문 입 니 다.
  • 전략 우선 순위
  • @Sensitive우선 적 용 됩 니 다.그 다음 에 시스템 에 주석 을 설치 하고 마지막 으로 사용자 정의 주석 입 니 다.
    대응 하 는 실현
    두 개의 원 주해@SensitiveStrategy,@SensitiveCondition각각 대응 하 는 실현 을 지정 하 였 습 니 다.
  • CustomPasswordStrategy.java
  • public class CustomPasswordStrategy implements IStrategy {
    
        @Override
        public Object des(Object original, IContext context) {
            return "**********************";
        }
    
    }
  • ConditionFooPassword.java
  • /**
     *     123456         
     * @author binbin.hou
     * date 2019/1/2
     * @since 0.0.1
     */
    public class ConditionFooPassword implements ICondition {
        @Override
        public boolean valid(IContext context) {
            try {
                Field field = context.getCurrentField();
                final Object currentObj = context.getCurrentObject();
                final String name = (String) field.get(currentObj);
                return !name.equals("123456");
            } catch (IllegalAccessException e) {
                throw new RuntimeException(e);
            }
        }
    
    }

    테스트 대상 정의
    사용자 정의 주 해 를 사용 할 대상 을 정의 합 니 다.
    public class CustomPasswordModel {
    
        @SensitiveCustomPasswordCondition
        @SensitiveCustomPasswordStrategy
        private String password;
    
        @SensitiveCustomPasswordCondition
        @SensitiveStrategyPassword
        private String fooPassword;
        
        //    
    }

    테스트
    /**
     *        
     */
    @Test
    public void customAnnotationTest() {
        final String originalStr = "CustomPasswordModel{password='hello', fooPassword='123456'}";
        final String sensitiveStr = "CustomPasswordModel{password='**********************', fooPassword='123456'}";
        CustomPasswordModel model = buildCustomPasswordModel();
        Assert.assertEquals(originalStr, model.toString());
    
        CustomPasswordModel sensitive = SensitiveUtil.desCopy(model);
        Assert.assertEquals(sensitiveStr, sensitive.toString());
        Assert.assertEquals(originalStr, model.toString());
    }

    대상 을 구축 하 는 방법 은 다음 과 같다.
    /**
     *          
     * @return   
     */
    private CustomPasswordModel buildCustomPasswordModel(){
        CustomPasswordModel model = new CustomPasswordModel();
        model.setPassword("hello");
        model.setFooPassword("123456");
        return model;
    }

    좋은 웹페이지 즐겨찾기