로그인 테스트
- 화면에 로그인 버튼 추가하기 & 로그인 성공 시 사용자명 나타내기
- 컨트롤러에서 사용자명 저장하여 화면으로 전달하기
- DB 테이블 확인하기
- 글쓰기로 권한 관리 확인
FrontEnd
index.mustache
-
로그인 버튼
-
{{#userName}}
- mustache는 다른 언어와 같은 if문을 제공하지 않는다.
- true / false 여부만 판단
- mustache에 항상 최종 값을 넘겨줘야 한다.
- userName이 있다면 userName을 노출하도록 구성
-
a href="/logout"
- 스프링 시큐리티에서 기본적으 제공하는 로그아웃 URL
- 개발자가 별도로 URL에 해당하는 컨트롤러를 만들 필요가 없다.
- SecurityConfig 클래스에서 URL을 변경할 순 있지만 기본 URL을 사용해도 충분하다.
-
{{^userName}}
- mustache에서 해당 값이 존재하지 않는 경우 ^를 사용
- userName이 없다면 로그인 버튼을 노출하도록 구성
-
a href="/oauth2/authorization/google"
- 스프링 시큐리티에서 기본적으로 제공하는 로그인 URL
- 로그아웃 URL과 마찬가지로 개발자가 별도의 컨트롤러를 생성할 필요가 없다.
-
<h1>스프링 부트로 시작하는 웹 서비스 No. 3</h1>
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<a href="/posts/save" role="button" class="btn btn-primary">글 등록</a>
{{#userName}}
Logged in as: <span id="user">{{userName}}</span>
<a href="/logout" class="btn btn-info active" role="button">Logout</a>
{{/userName}}
{{^userName}}
<a href="/oauth2/authorization/google" class="btn btn-success active" role="button">Google Login</a>
<a href="/oauth2/authorization/naver" class="btn btn-secondary active" role="button">Naver Login</a>
{{/userName}}
</div>
</div>
<!-- -->
</div>
BackEnd
IndexController
- 컨트롤러 수정
- (SessionUser) httpSession.getAttribute("user")
- CustomOAuth2UserService에서 로그인 성공 시 세션에 SessionUser를 저장하도록 구성
- 로그인 성공 시 httpSession.getAttribute("user")에서 값을 가져올 수 있다.
- if (user != null)
- 세션에 저장된 값이 있을 때만 model에 userName으로 등록
- 세션에 저장된 값이 있으면 model엔 아무런 값이 없는 상태이니 로그인 버튼이 보이게 된다.
- (SessionUser) httpSession.getAttribute("user")
@RequiredArgsConstructor
@Controller
public class IndexController {
private final PostsService postsService;
private final HttpSession httpSession;
@GetMapping("/")
public String index(Model model) {
model.addAttribute("posts", postsService.findAllDesc());
SessionUser user = (SessionUser) httpSession.getAttribute("user");
if(user != null) {
model.addAttribute("userName", user.getName());
}
return "index";
}
// save, update
}
OAuth2 Google 로그인 및 권한 테스트
화면 수정 확인
OAuth2 Google 연동 확인
로그인 확인
DB 내에 로그인 확인
로그인 유저 Role 수정
User Role 'USER'로 변경 후 글 등록 테스트 확인
'Spring > SpringBoot' 카테고리의 다른 글
[SpringBoot] 세션 저장소로 DB이용하기 (0) | 2020.06.01 |
---|---|
[SpringBoot] 어노테이션 기반 세션 처리 ArgumentResolver (0) | 2020.05.31 |
[SpringBoot] OAuth2 Google Login (0) | 2020.05.31 |
[SpringBoot] Spring Security & OAuth 2.0 로그인 (0) | 2020.05.31 |
[SpringBoot] 게시글 삭제 (0) | 2020.05.29 |