mirror of https://github.com/elunez/eladmin
springsecurity的验证功能
parent
cb63b30f37
commit
fa1d4f6f06
|
@ -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<String> elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
|
||||
//List<String> elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map((Function<GrantedAuthority, String>) GrantedAuthority::getAuthority).collect(Collectors.toList());
|
||||
// List<String> elPermissions = SecurityUtils.getUserDetails().getAuthorities().stream().map(new Function<GrantedAuthority,String>() {
|
||||
// @Override
|
||||
// public String apply(GrantedAuthority o) {
|
||||
// return o.getAuthority();
|
||||
// }
|
||||
// }).collect(Collectors.toList());
|
||||
//简化为map((Function<GrantedAuthority, String>) o -> o.getAuthority()),然后简化为(Function<GrantedAuthority, String>) GrantedAuthority::getAuthority
|
||||
// 判断当前用户的所有权限是否包含接口上定义的权限
|
||||
return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(elPermissions::contains);
|
||||
// return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch( new Predicate<String>(){
|
||||
//
|
||||
// @Override
|
||||
// public boolean test(String o) {
|
||||
// return elPermissions.contains(o);
|
||||
// }
|
||||
// });
|
||||
//简化为anyMatch(o -> elPermissions.contains(o)) 然后再次简化为elPermissions::contains
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import static org.springframework.http.HttpStatus.*;
|
|||
/**
|
||||
* @author Zheng Jie
|
||||
* @date 2018-11-23
|
||||
* RestControllerAdvice作用于所有的Controller上
|
||||
*/
|
||||
@Slf4j
|
||||
@RestControllerAdvice
|
||||
|
|
|
@ -15,7 +15,13 @@ import java.util.*;
|
|||
@Slf4j
|
||||
@SuppressWarnings({"unchecked","all"})
|
||||
public class QueryHelp {
|
||||
|
||||
/**
|
||||
* <R, Q> Predicate getPredicate(R root, Q query)为泛型方法,
|
||||
* QueryHelp<T>为泛型类
|
||||
* Predicate为数据库的查询条件映射的Java代码的查询条件,CriteriaBuilder可以创建基于Java代码的库表的查询条件
|
||||
* CriteriaQuery指定要查询的表
|
||||
* Q:泛型,表示系统中所有的条件查询的条件,有很多xxxxCriteria,如:MenuQueryCriteria
|
||||
*/
|
||||
public static <R, Q> Predicate getPredicate(Root<R> root, Q query, CriteriaBuilder cb) {
|
||||
List<Predicate> list = new ArrayList<>();
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -19,6 +19,9 @@ public class TokenConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFi
|
|||
@Override
|
||||
public void configure(HttpSecurity http) {
|
||||
TokenFilter customFilter = new TokenFilter(tokenProvider);
|
||||
/**
|
||||
* 在验证用户名和密码之前,添加一个自定义的filter,用来提供token的验证
|
||||
*/
|
||||
http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,9 @@ public class MenuServiceImpl implements MenuService {
|
|||
@Cacheable
|
||||
public List<MenuDto> 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<Menu> all = menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder));
|
||||
List<MenuDto> menuDtos = menuMapper.toDto(all);
|
||||
return menuDtos;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue