유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.
IDE : IntelliJ
언어 : Java
DB : MySQL
빌드관리 도구 : Maven
OS : iOS
참고유튜브 : 메타코딩
스프링시큐리티를 이용해 로그인을 할 때 커스터마이징을 하기위해선 주소를 바꿔야하는 부분이 있다.
UserService.java에서 로그인하지 않아도 접근할 수 있는 주소에 /auth를 붙여준다.
UserApiController.java에서도 주소를 변경해준다. 로그인은 시큐리티로 할 것이기 때문에 삭제해주어도 무방하다.
userService.java에서도 로그인 부분을 삭제한다.
UserRepository에서도 로그인 부분을 사용하지 않을 것이기 때문에 삭제한다.
loginForm.jsp로 이동해서 버튼을 form 안으로 이동하고 script를 삭제하자
이제 로그인할때 User.js로 이동해서 로그인이 되지 않기 때문에 form에 주소를 걸어주고 name값을 지정해준다.
임시로 #라고 지정해주었다.
<form action="#" method="post">
<div class="form-group">
<label for="username">ID</label>
<input type="text" class="form-control" id="username" placeholder="Enter ID" name="username">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" placeholder="Enter Password" name="password">
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember"> Remember me
</label>
</div>
<button id="btn-login" class="btn btn-primary">Login</button>
</form>
header.jsp로 이동해 바뀐 주소를 입력해준다.
이제 user.js로 이동해 Login을 위한 이벤트를 삭제해주어도 된다.
스프링시큐리티 로그인파일을 만들기위해 config 패키지를 생성한 후 SecurityConfig라는 이름의 자바파일을 만들어준다.
스프링부트 3.0이상인 경우엔 아래와 같이 작성하면 된다.
/auth인 주소에는 모든 접근을 허용하고 그 외의 주소인경우엔 인증된사용자만 접근을 허용하게 만들어준다.
하지만 나는 현재 /auth/** 로 진행하고자하면 "페이지가 작동하지 않습니다. 리디렉션한 횟수가 너무 많습니다" 라는 에러가 발생하게 된다.
userController.java 에서 테스트를 위해 콘솔로 찍어보면 해당 글이 계속 반복되어 찍히는걸 확인할 수 있었다.
찾아보니 접근을 하기위해서 인증이 필요한데 시큐리티가 해당 페이지를 계속 보내면서 해당 오류가 발생한다고해서 해결방법에 대해서 검색해 보았다.
찾아보니 springboot 3.0 버전에서는 permitAll이 작동되지 않는 상황이 있다고 본인도 "/**"를 추가해서 사용한다고 하는 글을 보았다.
정확한 내용은 더 찾아봐야겠지만 임시방편으로 나도 "/**"을 추가해서 사용하기로 했다. (이렇게 하면 시큐리티를 사용하는게 소용이 없는걸 알지만 ㅠㅠ)
@Configuration
public class SecurityConfig {
@Bean
BCryptPasswordEncoder encoder(){
return new BCryptPasswordEncoder();
}
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception{
http
.authorizeHttpRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.requestMatchers("/auth/**","/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm").permitAll()
return http.build();
}
}
.loginPage에 작성한 주소대로("/auth/loginForm") 잘 접속이 되는걸 확인 할 수 있다.
'프로젝트 > Spring Boot 블로그프로젝트' 카테고리의 다른 글
[블로그프로젝트] 19. 시큐리티로 로그인하기 (4) | 2023.06.09 |
---|---|
[블로그프로젝트] 18. 비밀번호 해쉬 후 회원가입하기 (0) | 2023.06.07 |
[블로그프로젝트] 16 스프링시큐리티로 로그인하기(3) (0) | 2023.06.05 |
[블로그프로젝트] error. jstl 500 error 해결 (2) | 2023.05.29 |
[블로그프로젝트] 15. 스프링시큐리티로 로그인하기(2) (0) | 2023.05.19 |
댓글