springsecurity的验证功能

pull/383/head
Nick 2020-03-31 15:22:06 +08:00
parent cb63b30f37
commit fa1d4f6f06
6 changed files with 37 additions and 3 deletions

View File

@ -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
}
}

View File

@ -18,6 +18,7 @@ import static org.springframework.http.HttpStatus.*;
/**
* @author Zheng Jie
* @date 2018-11-23
* RestControllerAdviceController
*/
@Slf4j
@RestControllerAdvice

View File

@ -15,7 +15,13 @@ import java.util.*;
@Slf4j
@SuppressWarnings({"unchecked","all"})
public class QueryHelp {
/**
* <R, Q> Predicate getPredicate(R root, Q query),
* QueryHelp<T>
* PredicateJavaCriteriaBuilderJava
* CriteriaQuery
* Q:,,xxxxCriteria,MenuQueryCriteria
*/
public static <R, Q> Predicate getPredicate(Root<R> root, Q query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<>();

View File

@ -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());
}

View File

@ -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);
}
}

View File

@ -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