관심없는 주제는 안해서 졸리도 않고, 딴짓만 하고 싶은데 집중하는 강의는 미친 듯이 잠이 오네?
<!-- https://mvnrepository.com/artifact/org.springframework.security.oauth/spring-security-oauth2 -->
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.4.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-oauth2-client -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-client</artifactId>
<version>6.2.4</version>
</dependency>
security:
oauth2:
client:
registration:
google:
client-id: 760459109498-p7r85c6qbscblul8s2uppsn0e비밀이다.
client-sercret: GOCSPX-H이것도 비밀이다.
sccope:
- email
- profile
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<h1>로그인 페이지</h1>
<form action="/security/login" method="POST">
<input type="text" name="username" placeholder="username"/> <br>
<input type="text" name="password" placeholder="password"/> <br>
<button>로그인</button>
</form>
<a href="/oauth2/authorization/google">구글로그인</a>
<a href="/security/joinForm">회원가입 바로 하러가기</a>
</body>
</html>
왜 개발자들이 영어를 잘 해야하는지 알겠어요..ㅜ
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable())
.authorizeRequests((authorizeRequests) -> authorizeRequests
.requestMatchers("/user/**").authenticated()
.requestMatchers("/admin/**").hasRole("ADMIN")
.requestMatchers("/manager/**").hasAnyRole("ADMIN", "MANGER"))
.formLogin(formLogin -> formLogin
.loginPage("/loginForm") //-> 사용자 정의 로그인 페이지
.loginProcessingUrl("/login") //이 주소가 호출 되면 시큐리티가 낚아채서 로그인 ㄱㄱ
.defaultSuccessUrl("/")) // -> 로그인 성공 후 이동 페이지
//여기부터 =============================
.oauth2Login(oauth2Login -> oauth2Login
.loginPage("/loginForm")
.defaultSuccessUrl("/")
.userInfoEndpoint(userInfoEndpoint -> userInfoEndpoint
.userService(null)));
//여기까지 추가 수정=============================
return http.build();
}
^__^ 오류터지기 설렌다. 사실 당연한거임.. 위에 nulll을 줬으니까... 하지만 내가 할 수 있는 건 또 별개의 문제...
그러면 우리는 요 userservice
에 넣을 무언가를 만들어야겠지요??
위에서 userservice에 넣을 구현체가 필요하다고 했는데 어떤 타입의 구현체가 필요한걸까?
public
반환값 -> ~~~ UserInfoEndpointConfig
메서드 이름 -> userService
파라미터 값,,, ->
(org.springframework.security.oauth2.client.userinfo.OAuth2UserService
<org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest,
org.springframework.security.oauth2.core.user.OAuth2User>
userService) {
/* compiled code */
}
이게 무슨일이죠...?
보기 힘들지만 그래도 다시 잘 보면 OAuth2UserService<OAuth2UserRequest,OAuth2User>
인 것을 확인할 수 있다.
그러니까 다음 글에서는 이 타입의 userservice를 만들자고요~!
호호 기대감 증폭이요`1