자바 로그 탈 민 프레임 워 크 sensitive-v 0.0.4 시스템 내 에 일반적인 주 해 를 설치 하고 사용자 정의 주 해 를 지원 합 니 다.
로그 탈 민 은 흔히 볼 수 있 는 안전 수요 이다.일반적인 도구 류 방법 을 바탕 으로 하 는 방식 은 코드 에 대한 침입 성 이 너무 강하 다.작성 하기 도 귀 찮 고.
본 프로젝트 는 주 해 를 바탕 으로 하 는 방식 을 제공 하고 흔히 볼 수 있 는 탈 민 방식 을 내장 하여 개발 에 편리 하 다.
특성
사용자 정의 주석
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{
}
@SensitiveStrategy
정책 을 단독으로 사용 할 때 기본 값 이 적 용 됩 니 다.@SensitiveCondition
주석 이 있 으 면 조건 이 만족 할 때 만 탈 민 전략 을 실행 할 수 있 습 니 다.@SensitiveCondition
시스템 내 에 주석 과 사용자 정의 주석 만 적 용 됩 니 다.@Sensitive
자신 만 의 전략 발효 조건 이 있 기 때 문 입 니 다.@Sensitive
우선 적 용 됩 니 다.그 다음 에 시스템 에 주석 을 설치 하고 마지막 으로 사용자 정의 주석 입 니 다.대응 하 는 실현
두 개의 원 주해
@SensitiveStrategy
,@SensitiveCondition
각각 대응 하 는 실현 을 지정 하 였 습 니 다.public class CustomPasswordStrategy implements IStrategy {
@Override
public Object des(Object original, IContext context) {
return "**********************";
}
}
/**
* 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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React, Docker, 런타임 환경 변수컨테이너화된 반응 앱은 가장 일반적으로 정적 서빙nginx을 사용하므로 런타임에 환경 변수를 javascript에 직접 전달할 방법이 없습니다. 수정된 런타임<script>에 index.html 블록을 추가하고 환경...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.