diff --git a/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java index 94f61bea..2cc70403 100644 --- a/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/config/ElPermissionConfig.java @@ -5,6 +5,8 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; +import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -16,7 +18,23 @@ public class ElPermissionConfig { public Boolean check(String ...permissions){ // 获取当前用户的所有权限 List elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); + //List elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map((Function) GrantedAuthority::getAuthority).collect(Collectors.toList()); +// List elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map(new Function() { +// @Override +// public String apply(GrantedAuthority o) { +// return o.getAuthority(); +// } +// }).collect(Collectors.toList()); +//简化为map((Function) o -> o.getAuthority()),然后简化为(Function) GrantedAuthority::getAuthority // 判断当前用户的所有权限是否包含接口上定义的权限 return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(elPermissions::contains); +// return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch( new Predicate(){ +// +// @Override +// public boolean test(String o) { +// return elPermissions.contains(o); +// } +// }); +//简化为anyMatch(o -> elPermissions.contains(o)) 然后再次简化为elPermissions::contains } } diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java index 95ee4113..16d4d5c9 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java @@ -18,6 +18,7 @@ import static org.springframework.http.HttpStatus.*; /** * @author Zheng Jie * @date 2018-11-23 + * RestControllerAdvice作用于所有的Controller上 */ @Slf4j @RestControllerAdvice diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index c42a514e..0914fc08 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -15,7 +15,13 @@ import java.util.*; @Slf4j @SuppressWarnings({"unchecked","all"}) public class QueryHelp { - + /** + * Predicate getPredicate(R root, Q query)为泛型方法, + * QueryHelp为泛型类 + * Predicate为数据库的查询条件映射的Java代码的查询条件,CriteriaBuilder可以创建基于Java代码的库表的查询条件 + * CriteriaQuery指定要查询的表 + * Q:泛型,表示系统中所有的条件查询的条件,有很多xxxxCriteria,如:MenuQueryCriteria + */ public static Predicate getPredicate(Root root, Q query, CriteriaBuilder cb) { List list = new ArrayList<>(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index 33a718a4..d2e5b333 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -119,7 +119,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { * 3 T[] toArray(T[] a)最好加上泛型的参数,不然会返回Object[]数组,接收方处理起来麻烦 */ .antMatchers(anonymousUrls.toArray(new String[0])).permitAll() - // 所有请求都需要认证 + /** + * 所有请求都需要认证 + * anyRequest().authenticated():其他所有的请求都必须经过authenticated(验证)才能访问 + * 也就是其他所有的请求都必须用户登录后才能访问,用户一登录就相当于已验证 + */ .anyRequest().authenticated() .and().apply(securityConfigurerAdapter()); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java index d78378d8..1784e544 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java @@ -19,6 +19,9 @@ public class TokenConfigurer extends SecurityConfigurerAdapter queryAll(MenuQueryCriteria criteria){ // Sort sort = new Sort(Sort.Direction.DESC,"id"); - return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + List all = menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)); + List menuDtos = menuMapper.toDto(all); + return menuDtos; } @Override