SpringSecurity 동적 로드 사용자 역할 권한 로그 인 및 인증 기능 실현
5368 단어 SpringSecurity동적 로드로그 인감 권
많은 사람들 이 Spring Security 가 로그 인 검증 을 실현 하 는 것 이 어렵다 고 생각 했 고 저 는 처음에 공 부 를 했 을 때 도 그렇게 생각 했 습 니 다.사용자 이름 비밀 번 호 를 받 는 데 사용 할 컨트롤 러 와 Spring Security 를 결합 해서 어떻게 사용 해 야 하 는 지 오 랜 만 에 알 아 봤 기 때문이다.이것 은 선입견 적 인 오류 이다.나중에 나 는 네가 직접 Controller 를 쓸 필요 가 없다 는 것 을 알 게 되 었 다.
Spring Security 사용자 정보,캐릭터 정보,권한 정보,로그 인 페이지 가 무엇 인지 만 알려 주 시 겠 습 니까?로그 인 성공 페이지 는 무엇 입 니까?로그 인 에 관 한 다른 모든 정보.구체 적 인 로그 인 검증 논 리 를 통 해 실현 할 수 있 습 니 다.
1.동적 데이터 로그 인 검증 의 기초 지식
본 호 이전 글 에 서 는 Spring Security 의 formLogin 로그 인 인증 모드,RBAC 의 권한 제어 관리 모델 을 소개 하고 Spring Security 의 로그 인 인증 논리 소스 코드 를 분석 했다.Google 의 모든 사용자,역할,권한 정 보 는 설정 파일 에 기록 되 어 있 지만 실제 업무 시스템 에 서 는 RBAC 권한 모델 의 데이터베이스 시트 에 저 장 됩 니 다.다음은 그 중의 핵심 개념 을 살 펴 보 자.
2.UserDetails 와 UserDetails Service 인터페이스
public interface UserDetails extends Serializable {
//
Collection<? extends GrantedAuthority> getAuthorities();
//
String getPassword();
//
String getUsername();
//
boolean isAccountNonExpired();
//
boolean isAccountNonLocked();
//
boolean isCredentialsNonExpired();
//
boolean isEnabled();
}
이제 우 리 는 이러한 정 보 를 Spring Security 에 제공 하면 Spring Security 는 로그 인 검증 을 어떻게 하 는 지 알 수 있 고 우리 가 직접 Controller 를 써 서 로그 인 검증 논 리 를 실현 할 필요 가 없다 는 것 을 알 게 되 었 다.3.사용자 세부 정보 인터페이스 실현
public class SysUser implements UserDetails{
String password(); //
String username(); //
boolean accountNonExpired; //
boolean accountNonLocked; //
boolean credentialsNonExpired; //
boolean enabled; //
Collection<? extends GrantedAuthority> authorities; //
//
// set
// get ( UserDetails )
}
우 리 는 UserDetails 에 적응 하 는 자바 POJO 류 를 썼 습 니 다.이른바 UserDetails 인터페이스 실현 은 get 방법 입 니 다.get 방법 은 Spring Security 에서 호출 되 며,set 방법 이나 구조 함 수 를 통 해 Spring Security 에 User Details 데 이 터 를 제공 합 니 다.4.UserDetailsService 인터페이스 실현
@Component
public class MyUserDetailsService implements UserDetailsService{
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// sys_user 。loadUser Mybatis JDBC JPA 。
SysUser sysUser = loadUser(username);
//
if(user == null) { throw new UsernameNotFoundException(" "); }
// ,
// ROLE Authority ( 、 )。
// , 。
sysUser.setAuthorities( AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_AMIN , system:user:delete"));
//sysUser.setAccountNonLocked(true false);
return sysUser;
}
}
이로써 저 희 는 시스템 안의 모든 사용자,역할,권한 정 보 를 UserDetails Service 와 User Details 를 통 해 Spring Security 에 알 렸 습 니 다.그러나 대부분의 친구 들 은 로그 인 기능 을 어떻게 실현 해 야 할 지 모 를 수도 있 습 니 다.사실은 남 은 일 은 간단 합 니 다.
총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 SpringSecurity 동적 으로 사용자 역할 권한 을 불 러 와 로그 인 및 감 권 기능 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Spring] Spring Security - JWT강력한 사용자 인증 및 Access 제어 framework이다. 이는 Java 애플리케이션에 인증 및 권한 부여를 제공하는데 중점을 두었으며 다양한 필터를 사용하여 커스터마이징이 가능하다. '인증(Authentica...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.