Spring Security (5): 권한 설정
23914 단어 기술.
묘사 하 다.
hasRole([role])
현재 사용자 가 지정 한 역할 을 가지 고 있다 면 true 로 돌아 갑 니 다. 제 공 된 역할 은 "role" 로 시작 할 수 없습니다. 기본 Spring Security 는 role 을 추가 합 니 다.
hasAnyRole([role1,role2])
현재 사용자 가 제공 하 는 역할 (쉼표 로 구 분 된 문자열 목록 형식) 이 있다 면 true 가 제공 하 는 역할 을 되 돌려 줍 니 다. "role" 로 시작 할 수 없습니다. 기본 Spring Security 는 role 을 추가 합 니 다.
hasAuthority([authority])
현재 사용자 가 지정 한 권한 이 있다 면 true 로 돌아 갑 니 다.
hasAnyAuthority([authority1,authority2])
현재 사용자 가 제공 하 는 모든 권한 (쉼표 로 구 분 된 문자열 목록 형식 으로 제공) 이 있다 면 true 로 돌아 갑 니 다.
principal
principal object 에 직접 접근 할 수 있 습 니 다. current user 를 사용 하지 않 습 니 다.
authentication
Security Context 에서 가 져 온 현재 인증 대상 에 직접 접근 할 수 있 도록 합 니 다.
permitAll
모든 사용자 가 접근 할 수 있 습 니 다.
denyAll
어떤 사용자 도 접근 할 수 없습니다.
isAnonymous()
현재 사용자 가 익명 사용자 라면 true 로 돌아 갑 니 다.
isRememberMe()
현재 사용자 가 remember me 사용자 라면 true 로 돌아 갑 니 다.
isAuthenticated()
사용자 가 익명 이 아니라면 true 로 돌아 갑 니 다.
isFullyAuthenticated()
사용자 가 익명 사용자 나 '나 를 기억 해' 사용자 가 아니라면 true 로 돌아 갑 니 다.
hasPermission(Object target, Object permission)
사용자 가 주어진 권한 의 대상 에 접근 할 권리 가 있다 면 true 로 돌아 갑 니 다.예 를 들 어 hasPermission (domainObject, 'read')
hasPermission(Object targetId, String targetType, Object permission)
사용자 가 주어진 권한 의 대상 에 접근 할 권리 가 있다 면 true 로 돌아 갑 니 다.예 를 들 어 hasPermission (1, 'com. example. domain. Message', 'read')
배치 안 열
//
http.authorizeRequests().antMatchers("/index").permitAll();
http.authorizeRequests().antMatchers("/index").access("permitAll");]
//
http.authorizeRequests().antMatchers("/home").denyAll();
http.authorizeRequests().antMatchers("/home").access("denyAll");
// ( )
http.authorizeRequests().antMatchers("/admin").authenticated();
http.authorizeRequests().antMatchers("/admin").access("authenticated");
// ( , )
http.authorizeRequests().antMatchers("/admin").fullyAuthenticated();
http.authorizeRequests().antMatchers("/admin").access("fullyAuthenticated");
//
http.authorizeRequests().antMatchers("/admin").rememberMe();
http.authorizeRequests().antMatchers("/admin").access("rememberMe");
//
http.authorizeRequests().antMatchers("/admin").anonymous();
http.authorizeRequests().antMatchers("/admin").access("anonymous");
//
http.authorizeRequests().antMatchers("/index").hasAuthority("user");
http.authorizeRequests().antMatchers("/index").access("hasAuthority('user')");
//
http.authorizeRequests().antMatchers("/home").hasAnyAuthority("update", "delete", "insert");
http.authorizeRequests().antMatchers("/home").access("hasAnyAuthority('update','delete','insert')");
//spring security role , , ROLE_
//role ROLE_
// :hasRole、hasAnyRole role ROLE_ ,
// : access hasRole、hasAnyRole ROLE_ ,
http.authorizeRequests().antMatchers("/index").hasRole("GUEST");
http.authorizeRequests().antMatchers("/index").access("hasRole('GUEST')");
http.authorizeRequests().antMatchers("/admin").hasAuthority("ROLE_GUEST");
http.authorizeRequests().antMatchers("/home").hasAnyRole("GUEST", "USER", "ADMIN");
http.authorizeRequests().antMatchers("/home").access("hasAnyRole('ROLE_GUEST','ROLE_USER','ROLE_ADMIN')");
SpEL 표현 식
@Component("check")
public class AuthorityCheck {
public boolean permitAll(){
return true;
}
public boolean denyAll(){
return false;
}
public boolean req(HttpServletRequest req){
return "1".equals(req.getParameter("type"));
}
public boolean auth(Authentication authentication){
return authentication.getAuthorities().size() > 2;
}
public boolean check(HttpServletRequest req, Authentication authentication){
return "1".equals(req.getParameter("type")) || authentication.getAuthorities().size() > 2;
}
}
// SpEL
http.authorizeRequests().antMatchers("/index").access("@check.permitAll()");
http.authorizeRequests().antMatchers("/home").access("@check.denyAll()");
http.authorizeRequests().antMatchers("/index").access("@check.req(request)");
http.authorizeRequests().antMatchers("/index").access("@check.auth(authentication)");
http.authorizeRequests().antMatchers("/index").access("@check.check(request,authentication)");
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vim + sed 로 셸 스 크 립 트 파일 정리 하기/etc/sysconfig/network008 009 # Check that networking is up.010 [ ${NETWORKING} = "no" ] && exit 0011 012 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.