springboot - blog project (49,50)

Yuri Lee·2020년 8월 31일
0

springboot - blog project

목록 보기
25/49
post-thumbnail

스프링부트 강좌 49강(블로그 프로젝트) - 스프링 시큐리티 로그인 페이지 커스터마이징

앞에 auth를 붙인다..

		.antMatchers("/auth/loginForm","/auth/joinForm")

/auth/** 라고 해도 무방

localhost:800/으로 들어가면..Access Denied

하지만 http://localhost:8000/auth/joinForm 으로 들어가면

접근제한이 걸렸을 때는 예전에는 바로 login 창이 떴다. 지금은 나오지 않는다. 왜? 로그인 페이지를 커스터마이징을 했기 때문이다.

package com.yuri.blog.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


// 이 세개는 시큐리티의 세트이다... 이해가 안되면 그냥 하면 됨...^^
// 빈 등록: 스프링 컨테이너에서 객체를 관리할 수 있게 하는 것
@Configuration //빈등록(IoC관리)
@EnableWebSecurity // 시큐리티 필터가 등록이 된다. 
@EnableGlobalMethodSecurity(prePostEnabled = true) // 특정 주소로 접근을 하면 권한 및 인증을 미리 체크하겠다는 뜻.
public class SecurityConfig extends WebSecurityConfigurerAdapter{

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http
			.authorizeRequests()
				.antMatchers("/auth/**")
				.permitAll()
				.anyRequest() //이게 아닌 다른 모든 요청은 
				.authenticated()	//인증이 되어야 함
			.and()
				.formLogin()
				.loginPage("/auth/loginForm");
				
	}
}

인증이 필요한 곳으로 오면 loginpage가 자동으로 뜬다. /는 지금 접근이 제한되어있다.

auth로 갈 때 빼고는 전부다 인증이 필요하다. /로 가면 인증이 필요하니까 자동으로 커스터마이징한 /auth/loginForm으로 갈 것이다.

스프링부트 강좌 50강(블로그 프로젝트) - 비밀번호 해쉬 후 회원가입하기

시큐리티 -> 로그인(파라메터) 요청

원래 로그인을 할때 직접 로그인을 짰다. 하지만 우리가 로그인 하면 시큐리티라는 얘가 지쳐본다. 요청을 가로챈다. 이때 username과 password를 들고온다.

이 두개를 가로채서 얘가 로그인을 진행시킨다. 이 로그인 진행이 완료되면

시큐리티 세션에 유저 정보를 등록한다. 그리고 이 유저 정보를 필요할 때마다 가져다가 사용한다. (DI) 유저 정보를 스프링이 IoC를 통해서 관리하고 있기 때문이다.

이제 로그인 요청을 할때 시큐리티가 가로치게 설정할 것이다. 그럼 유저정보를 시큐리티 세션에 저장해놓게 해준다.

중요한 것은 우리가 만든 유저 오브젝트를 넣을 수 없다. 타입이 정해져있기 때문이다.

Type: UserDetails라는 타입..

두가지 방법이 있다.
1. UserDetails가 userobject를 extends한다던지
2.

password가 그냥 1234면 절대 진행되지 않는다. 해쉬가 되어야 시큐리티 진행 가능이다.

해쉬!!!!

고정길이의 문자열로 변경된다.
고정길이!! 매우 좋다.

300p, 250p내용 변경 함. 그럼 해쉬 값이 바뀜
그럼 처음 이 책이 원본인지 확인하고 싶으면..
그 처음 값이 원본임 근데 누군가가 내용을 변경했다면
그것을 비교해서 위조되었는지를 확인할 수 있다.

해쉬값으로 바뀌지 않으면 로그인이 진행이 되지 않는다.


해쉬값 테스트 결과!! 잘 맞게 들어갔다.
그리고 신기했던 점 한가지 Junit test 라는 단위테스트를 할 수도 있다는 점 ㅠㅠ.... sts 자체를 처음 써보니까 그냥 하나부터 열까지 다 처음 보는 ^^

[오늘의 에러라고 해야 하나.....]

비밀번호 해쉬 후에 workbench에서 제대로 안들어가길래 좌절했지만 다시 다 끄고 켜봤더니 보이는 바와 같이 잘 먹혔다....😅😅😅😅😅

-이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.-

profile
Step by step goes a long way ✨

0개의 댓글