diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/BaseJpaRepositoryFactoryBean.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/BaseJpaRepositoryFactoryBean.java
new file mode 100644
index 0000000..647ba16
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/BaseJpaRepositoryFactoryBean.java
@@ -0,0 +1,52 @@
+package com.supwisdom.leaveschool.user.config;
+
+import javax.persistence.EntityManager;
+
+import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
+import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
+import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
+import org.springframework.data.repository.core.RepositoryInformation;
+import org.springframework.data.repository.core.RepositoryMetadata;
+import org.springframework.data.repository.core.support.RepositoryFactorySupport;
+
+import com.supwisdom.leaveschool.user.domain.ABaseDomain;
+import com.supwisdom.leaveschool.user.repository.ABaseJpaRepositoryImpl;
+
+public class BaseJpaRepositoryFactoryBean<T extends ABaseJpaRepositoryImpl<S>, S extends ABaseDomain> extends JpaRepositoryFactoryBean<T, S, String> {
+
+  public BaseJpaRepositoryFactoryBean(Class<? extends T> repositoryInterface) {
+    super(repositoryInterface);
+  }
+
+  @SuppressWarnings("rawtypes")
+  protected RepositoryFactorySupport createRepositoryFactory(EntityManager em) {
+    return new BaseJpaRepositoryFactory(em);
+  }
+
+  private static class BaseJpaRepositoryFactory<T extends ABaseDomain> extends JpaRepositoryFactory {
+
+    private final EntityManager em;
+
+    public BaseJpaRepositoryFactory(EntityManager em) {
+      super(em);
+      this.em = em;
+    }
+
+    protected SimpleJpaRepository<T, String> getTargetRepository(RepositoryInformation information, EntityManager em) {
+      Class<T> domainClass = (Class<T>) information.getDomainType();
+      
+      return new ABaseJpaRepositoryImpl<T>(domainClass, em);
+    }
+
+//    @SuppressWarnings("unchecked")
+//    protected Object getTargetRepository(RepositoryMetadata metadata) {
+//      return new ABaseJpaRepositoryImpl<T>((Class<T>) metadata.getDomainType(), this.em);
+//    }
+
+    protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
+      return ABaseJpaRepositoryImpl.class;
+    }
+
+  }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/JpaDataConfig.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/JpaDataConfig.java
new file mode 100644
index 0000000..bf93feb
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/config/JpaDataConfig.java
@@ -0,0 +1,12 @@
+package com.supwisdom.leaveschool.user.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.data.web.config.EnableSpringDataWebSupport;
+
+//@Configuration
+//@EnableJpaRepositories(basePackages = "com.supwisdom.leaveschool.user.repository", repositoryFactoryBeanClass = BaseJpaRepositoryFactoryBean.class)
+//@EnableSpringDataWebSupport
+public class JpaDataConfig {
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
index 3005491..36ab166 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/admin/Api1AdminUserController.java
@@ -34,10 +34,10 @@
   
   /**
    * 
-   * curl -i -s -X GET -H 'Remote_User:admin' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' 
-   * curl -i -s -X GET -H 'Remote_User:admin' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users?pageIndex=2&pageSize=50' 
-   * curl -i -s -X GET -H 'Remote_User:admin' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name&mapBean[status]=1' 
-   * curl -i -s -X GET -H 'Remote_User:admin' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name&mapBean[status]=0' 
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' 
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users?pageIndex=2&pageSize=50' 
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name&mapBean[status]=1' 
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users?pageIndex=0&pageSize=20&mapBean[username]=username&mapBean[name]=name&mapBean[status]=0' 
    * 
    * response success: 
    * 
@@ -99,7 +99,7 @@
   
   /**
    * 
-   * curl -i -s -X GET -H 'Remote_User:admin' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1' 
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1' 
    * 
    * response success: 
    * 
@@ -166,7 +166,7 @@
   
   /**
    * 
-   * curl -i -s -X POST -H 'Remote_User:admin' -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
+   * curl -i -s -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
    * -d '{"username":"test001","password":"test001","enabled":true,"accountNonExpired":true,"accountNonLocked":true,"credentialsNonExpired":true,"name":"测试001","status":"1"}'
    * 
    * response success: 
@@ -214,7 +214,7 @@
   
   /**
    * 
-   * curl -i -s -X PUT -H 'Remote_User:admin' -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
+   * curl -i -s -X PUT -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
    * -d '{"id":"1","status":"0"}'
    * 
    * response success:
@@ -233,7 +233,7 @@
    *   "path":"/api/v1/admin/users"
    * }
    * 
-   * curl -i -s -X PUT -H 'Remote_User:admin' -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
+   * curl -i -s -X PUT -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
    * -d '{"status":"0"}'
    * 
    * response error:
@@ -247,7 +247,7 @@
    *   "path":"/api/v1/admin/users"
    * }
    * 
-   * curl -i -s -X PUT -H 'Remote_User:admin' -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
+   * curl -i -s -X PUT -H 'Content-Type:application/json' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users' \
    * -d '{"id":"1","status":"0"}'
    * 
    * response error:
@@ -291,7 +291,7 @@
   
   /**
    * 
-   * curl -i -s -X DELETE -H 'Remote_User:admin' -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1'
+   * curl -i -s -X DELETE -H 'Accept:application/json' 'http://localhost:10010/api/v1/admin/users/1'
    * 
    * response success: 
    * 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/demo/ApiDemoUserController.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/demo/ApiDemoUserController.java
index 99c120a..8d776f4 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/demo/ApiDemoUserController.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/controller/api/demo/ApiDemoUserController.java
@@ -11,8 +11,6 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.supwisdom.leaveschool.user.util.AuthUtil;
-
 @RestController
 @RequestMapping("/api/demo/users")
 public class ApiDemoUserController {
@@ -27,8 +25,6 @@
    */
   @GetMapping(path = "/greeting/{name}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
   public Map<String, Object> greeting(@PathVariable("name") String name) {
-    AuthUtil.getRemoteUser();
-    
     logger.debug(name);
     Map<String, Object> result = new HashMap<String, Object>();
     result.put("message", "Good " + name);
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/ADomain.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/ABaseDomain.java
similarity index 97%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/ADomain.java
rename to samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/ABaseDomain.java
index 9ec4049..deb959c 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/ADomain.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/ABaseDomain.java
@@ -11,7 +11,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 @MappedSuperclass
-public abstract class ADomain implements Serializable {
+public abstract class ABaseDomain implements Serializable {
 
   /**
    * 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
index 86fc807..212598b 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
@@ -9,7 +9,7 @@
 @Entity
 @Table(name = "TB_U_USER")
 @Data
-public class User extends ADomain {
+public class User extends ABaseDomain {
 
   /**
    * 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/ABaseJpaRepositoryImpl.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/ABaseJpaRepositoryImpl.java
new file mode 100644
index 0000000..5dabe82
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/ABaseJpaRepositoryImpl.java
@@ -0,0 +1,84 @@
+package com.supwisdom.leaveschool.user.repository;
+
+import java.util.Calendar;
+import java.util.Map;
+import java.util.Optional;
+
+import javax.persistence.EntityManager;
+import javax.transaction.Transactional;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.repository.support.JpaEntityInformation;
+import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import com.supwisdom.leaveschool.user.domain.ABaseDomain;
+
+@Transactional
+//@NoRepositoryBean
+public class ABaseJpaRepositoryImpl<T extends ABaseDomain> extends SimpleJpaRepository<T, String> implements BaseJpaRepository<T> {
+
+  @SuppressWarnings("unused")
+  private final EntityManager em;
+
+  public ABaseJpaRepositoryImpl(Class<T> domainClass, EntityManager em) {
+    super(domainClass, em);
+    this.em = em;
+  }
+
+  public ABaseJpaRepositoryImpl(JpaEntityInformation<T, String> information, EntityManager em) {
+    super(information, em);
+    this.em = em;
+  }
+  
+  public Page<T> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+    Page<T> page = this.findAll(pageRequest);
+
+    return page;
+  }
+
+  public T selectById(String id) {
+
+    try {
+      Optional<T> entity = this.findById(id);
+
+      return entity.get();
+    } catch (RuntimeException e) {
+      System.out.println("RuntimeException:" + e.getMessage());
+    } catch (Exception e) {
+      System.out.println("Exception:" + e.getMessage());
+    }
+
+    return null;
+  }
+
+  public T insert(T entity) {
+
+    if (entity.getCompanyId() == null || entity.getCompanyId().isEmpty()) {
+      entity.setCompanyId("1");
+    }
+
+    entity.setDeleted(false);
+    //entity.setAddAccount(AuthUtil.getRemoteUser()); // FIXME: setAddAccount
+    entity.setAddTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+
+  public T update(T entity) {
+
+    //entity.setEditAccount(AuthUtil.getRemoteUser()); // FIXME: setEditAccount
+    entity.setEditTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/BaseJpaRepository.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/BaseJpaRepository.java
new file mode 100644
index 0000000..df5c1f4
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/BaseJpaRepository.java
@@ -0,0 +1,22 @@
+package com.supwisdom.leaveschool.user.repository;
+
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import com.supwisdom.leaveschool.user.domain.ABaseDomain;
+
+@NoRepositoryBean
+public interface BaseJpaRepository<T extends ABaseDomain> extends JpaRepository<T, String> {
+  
+  public Page<T> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean);
+  
+  public T selectById(String id);
+  
+  public T insert(T entity);
+  
+  public T update(T entity);
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
index 5bcc1e3..2d67881 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
@@ -8,14 +8,12 @@
 import org.springframework.data.domain.ExampleMatcher;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
-import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import com.supwisdom.leaveschool.user.domain.User;
-import com.supwisdom.leaveschool.user.util.AuthUtil;
 
 @Repository
-public interface UserRepository extends JpaRepository<User, String> {
+public interface UserRepository extends BaseJpaRepository<User> {
   
   public default Page<User> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
     User probe = new User();
@@ -60,7 +58,7 @@
     }
     
     entity.setDeleted(false);
-    entity.setAddAccount(AuthUtil.getRemoteUser());
+    //entity.setAddAccount(AuthUtil.getRemoteUser());
     entity.setAddTime(Calendar.getInstance().getTime());
     
     User e = this.save(entity);
@@ -70,7 +68,7 @@
   
   public default User update(User entity) {
     
-    entity.setEditAccount(AuthUtil.getRemoteUser());
+    //entity.setEditAccount(AuthUtil.getRemoteUser());
     entity.setEditTime(Calendar.getInstance().getTime());
     
     User e = this.save(entity);
@@ -78,4 +76,5 @@
     return e;
   }
 
+
 }
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
index 2ded0aa..e42b225 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
@@ -4,9 +4,9 @@
 
 import javax.persistence.Column;
 
-import com.supwisdom.leaveschool.user.domain.ADomain;
+import com.supwisdom.leaveschool.user.domain.ABaseDomain;
 
-public class Test extends ADomain {
+public class Test extends ABaseDomain {
 
   /**
    * 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
index 426209f..3793233 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
@@ -4,9 +4,9 @@
 
 import javax.persistence.Column;
 
-import com.supwisdom.leaveschool.user.domain.ADomain;
+import com.supwisdom.leaveschool.user.domain.ABaseDomain;
 
-public class Test2 extends ADomain {
+public class Test2 extends ABaseDomain {
 
   /**
    * 
diff --git a/samples/user/src/main/resources/application.yml b/samples/user/src/main/resources/application.yml
index fff91a4..9f6ca40 100755
--- a/samples/user/src/main/resources/application.yml
+++ b/samples/user/src/main/resources/application.yml
@@ -6,6 +6,7 @@
   level:
     root: INFO
     org.springframework.web: TRACE
+    org.springframework.data.jpa: TRACE
     com.supwisdom.infras.security: DEBUG
     com.supwisdom.leaveschool: DEBUG
 
