#실직한김에만들어보자 시리즈
오늘은... 지도를 뒤에 배치할까 했었는데, 생각보다 별로인것 같아 화면을 먼저 바꿔볼까 한다.
보통 db 구성하고, 화면설계하고... 뭐 그렇게 하겠지만 개발은 재미로 해야하니까 ㅎ
- 기록 1
요상한 글자 배열을 없애고, 이쁜 사진의 위치를 조정했다.
바깥쪽엔 여백을 줘서 미(?) 를 살려보았다.
대문으로는 깔끔하고 괜찮은 것 같다.
나중에는 이미지가 랜덤으로 교체되게 해서 학교의 사진들이 보이게 하면 좋을 것 같다.
사진의 크기가 화면을 넘어갈 때는 어떻게 배치해야 하나 정말 곤란하다.
이럴 땐 사진을 잘라서 원하는 위치를 보여줘야 하는데, 아래와 같이 position으로 위치를 조절해주면 된다.
background-size: cover;
background-repeat: no-repeat;
background-position: center bottom;
- 기록 2
이제 드디어 다음 페이지의 메뉴들을 구현해야 한다.
현재 아래와 같은 구성을 생각하고 있다.
로그인 -> 메뉴 이동...
그러면 다음 페이지를 구현할 것이 아니라 로그인을 구현해야 하지 않을까? 그래서 로그인을 구현해야 하니 스프링 시큐리티를 추가하자.
implementation 'org.springframework.boot:spring-boot-starter-security'
gradle에 의존성 추가 후 서버를 재실행 하면, 아래와 같은 화면이 출력된다.
이건 스프링 시큐리티에서 기본적으로 제공하는 로그인 템플릿이기 때문에 다른 설정이 없다면 서버 시작 시 기본 설정이 이 페이지로 잡힌다.
의존성 추가 후 db 설정을 추가해주자.
//application.yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/
username: postgres
password: 1234
driver-class-name: org.postgresql.Driver
그 다음엔 저 화면에서 사용 될 계정을 연결할 파일을 만들면 된다. 하지만 여기서 먼저, 저 화면을 사용하고 싶지 않은 경우엔? 어떻게 해야 할까? 먼저 해야 할 일은 시큐리티 설정 자바 파일을 만드는 것이다.
//SecurityConfig.java
package cs.club.mojuk.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/assets/**", "/css/**", "/js/**", "img/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(form -> form
.loginPage("/")
.permitAll()
.defaultSuccessUrl("/", true)
)
.logout(logout -> logout
.permitAll()
);
return http.build();
}
}
config 패키지 아래 Security.java 파일을 생성 후 위와 같이 추가하면 된다.
간략하게 코드를 설명하자면 아래와 같다.
1. @EnableWebSecurity 어노테이션을 추가해 시큐리티 보안 옵션을 활성화 한다고 알려준다.
2. PasswordEncorder는 비밀번호를 암호화 할 때 사용되기 때문에 스프링 빈으로 등록해준다.
3. SecurityFilterChain 으로 페이지 이동과 계정에 관련된 설정을 진행할 수 있는데, 체인처럼 원하는 옵션을 추가한다고 해서 이름이 체인인 것 같다. http.authorizeHttpRequests 옵션은 페이지 이동 시 접근과 관련된 보안이다.
- 기록 3
시큐리티 옵션 추가 후 가끔 브라우저 개발자 모드 콘솔에서 아래와 같은 에러를 확인 할 수 있다.
이 에러는 여러가지 문제에서 출력되는데, 이 상황에선 접근 경로가 허용되지 않은 파일이 로딩되려고 할 때 출력되는 것이다. 자신이 입력한 경로들이 제대로 된 경로인지 한번 더 확인해보자.
* 한가지 예를 들면, 'css 폴더 아래 모든 파일' 을 접근 허용할 때는 "/css/" 가 아닌 "/css/**" 처럼 뒤에 **를 붙여줘야 한다.
시큐리티 추가 내용은 다음 날에 계속!
'Dev > simsim' 카테고리의 다른 글
실직한김에만들어보자 - 6일차 (1) | 2024.11.24 |
---|---|
실직한김에만들어보자 - 5일차 (0) | 2024.09.06 |
실직한김에만들어보자 - 4일차 (0) | 2024.09.04 |
실직한김에만들어보자 - 2일차 (0) | 2024.07.31 |
실직한김에만들어보자 - 1일차 (0) | 2024.07.29 |
댓글