Spring Security 의 formLogin 로그 인 인증 모드 를 자세히 설명 합 니 다.
1.formLogin 의 응용 장면
이 칼럼 의 이전 글 에 서 는 이미 Spring Security 의 Http Basic 모드 를 소 개 했 는데,이 모드 는 비교적 간단 하 다.Http 를 가 진 Header 를 통 해 간단 한 로그 인 검증 을 했 을 뿐 맞 춤 형 로그 인 페이지 가 없어 사용 장면 이 좁다.
완전한 응용 시스템 에 대해 로그 인 검증 과 관련 된 페이지 는 고도 로 맞 춤 형 이 고 아름 다 우 며 다양한 로그 인 방식 을 제공 합 니 다.이것 은 Spring Security 가 저희 가 맞 춤 형 로그 인 페이지 를 지원 해 야 합 니 다.즉,본 고 에서 소개 한 formLogin 모델 로그 인 인증 모델 입 니 다.
준비 작업
설명
formLogin 모드 의 세 가지 요소:
3.formLogin 모델 기초 설정 실현
우선,우 리 는 WebSecurity ConfigurerAdapter 를 계승 하여 configure(HttpSecurity http)방법 을 다시 써 야 합 니 다.이 방법 은 로그 인 검증 논 리 를 설정 하 는 데 사 용 됩 니 다.다음 코드 의 주석 정 보 를 주의 깊 게 보 세 요.
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable() // csrf ,
.formLogin()
.loginPage("/login.html")// , ,
.loginProcessingUrl("/login")// form action ,
.usernameParameter("uname")/// form input name , username
.passwordParameter("pword")//form input name , password
.defaultSuccessUrl("/index")//
.and()
.authorizeRequests()
.antMatchers("/login.html","/login").permitAll()//
.antMatchers("/biz1").hasAnyAuthority("biz1") // 、 ID
.antMatchers("/biz2").hasAnyAuthority("biz2")
.antMatchers("/syslog").hasAnyAuthority("syslog")
.antMatchers("/sysuser").hasAnyAuthority("sysuser")
.anyRequest().authenticated();
}
}
위의 코드 는 두 부분 으로 나 뉜 다.첫 번 째 부분 은 formLogin 설정 단계 로 로그 인 검증 논리 와 관련 된 정 보 를 설정 하 는 데 사 용 됩 니 다.예 를 들 어 로그 인 페이지,로그 인 성공 페이지,로그 인 요청 처리 경로 등.
두 번 째 부분 은 authorizeRequests 설정 단 으로 자원 의 접근 권한 을 설정 합 니 다.예 를 들 어 로그 인 페이지 를 개발 하 는 permitAll 은 방문 을 개방 합 니 다.'/biz 1'(업무 한 페이지 자원)은 자원 ID 가'biz 1'인 사용자 가 방문 할 수 있 습 니 다.
이때,우 리 는 브 라 우 저 를 통 해 접근 할 수 있 습 니 다.접근 권한 이 없 는 자원 을 마음대로 테스트 하면 login.html 페이지 로 이동 합 니 다.
4.자원 방문 제한 을 실현 하 는 수요
위의 글 에서 저 희 는 로그 인 인증 과 자원 접근 권한 규칙 을 설정 하 였 습 니 다.저 희 는 아직 구체 적 인 사용자 가 없습니다.다음은 구체 적 인 사용 자 를 설정 하 겠 습 니 다.WebSecurity ConfigurerAdapter 를 다시 쓰 는 configure(AuthenticationManager Builder auth)방법
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password(passwordEncoder().encode("123456")).authorities("biz1","biz2")
.and()
.passwordEncoder(passwordEncoder());// BCrypt
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
inMemoryAuthentication 。
withUser("user") user
password(passwordEncoder().encode("123456")) 123456
authorities("biz1","biz2") user ID biz1( ) biz2( )
이렇게 해서 우 리 는 글 에서 제시 한 일반 사용자 가 biz 1(업무 1)과 biz 2(업무 2)자원 만 방문 할 수 있 는 수 요 를 실현 했다.그러면 관리자 사용 자 는 모든 자원 의 설정 방식 에 접근 할 수 있 습 니 다.그 렇 죠?같은 레 시 피,같은 방식 으로 직접 시도 해 보 세 요!5.정적 자원 접근
우리 의 실제 개발 에서 로그 인 페이지 login.html 와 제어 층 Controller 로그 인 인증'/login'은 무조건 개방 되 어야 합 니 다.그 밖 에 css,js 파일 과 같은 정적 자원 도 검증 권한 이 필요 하지 않 습 니 다.접근 권한 도 열 어야 합 니 다.다음은 실현 방법 입 니 다.웹 보안 ConfigurerAdapter 류 의 configure(WebSecurity 웹)방법 을 다시 쓰 는 것 입 니 다.
@Override
public void configure(WebSecurity web) {
//
web.ignoring().antMatchers("/config/**", "/css/**", "/fonts/**", "/img/**", "/js/**");
}
총결산위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 Spring Security 의 formLogin 로그 인 인증 모델 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.