Skip to content

Commit

Permalink
rq도입
Browse files Browse the repository at this point in the history
  • Loading branch information
hanbonghun committed Apr 2, 2023
1 parent 776fa2d commit bef4466
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 9 deletions.
61 changes: 61 additions & 0 deletions src/main/java/com/ll/gramgram/base/rq/Rq.java
@@ -0,0 +1,61 @@
package com.ll.gramgram.base.rq;

import com.ll.gramgram.boundedContext.member.entity.Member;
import com.ll.gramgram.boundedContext.member.service.MemberService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;

@Component
@RequestScope
public class Rq {
private final MemberService memberService;
private final HttpServletRequest req;
private final HttpServletResponse resp;
private final HttpSession session;
private final User user;
private Member member = null; // 레이지 로딩, 처음부터 넣지 않고, 요청이 들어올 때 넣는다.

public Rq(MemberService memberService, HttpServletRequest req, HttpServletResponse resp, HttpSession session) {
this.memberService = memberService;
this.req = req;
this.resp = resp;
this.session = session;

// 현재 로그인한 회원의 인증정보를 가져옴
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

if (authentication.getPrincipal() instanceof User) {
this.user = (User) authentication.getPrincipal();
} else {
this.user = null;
}
}

// 로그인 되어 있는지 체크
public boolean isLogin() {
return user != null;
}

// 로그아웃 되어 있는지 체크
public boolean isLogout() {
return !isLogin();
}

// 로그인 된 회원의 객체
public Member getMember() {
if ( isLogout() ) return null;

// 데이터가 없는지 체크
if ( member == null ) {
member = memberService.findByUsername(user.getUsername()).orElseThrow();
}

return member;
}
}
Expand Up @@ -20,10 +20,7 @@ public class HomeController {

@GetMapping("/")
public String showMain(Model model, Principal principal){
if (principal != null) {
Member loginedMember = memberService.findByUsername(principal.getName()).orElseThrow();
model.addAttribute("loginedMember", loginedMember);
}

return "usr/home/main";
}

Expand Down
Expand Up @@ -58,8 +58,6 @@ public String showLogin() {
@PreAuthorize("isAuthenticated()")
@GetMapping("/me")
public String showMe(Principal principal, Model model) {
Member loginedMember = memberService.findByUsername(principal.getName()).orElseThrow();
model.addAttribute("loginedMember", loginedMember);

return "usr/member/me";
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/templates/usr/layout/layout.html
Expand Up @@ -69,10 +69,10 @@
<a href="javascript:;" sec:authorize="isAuthenticated()" onclick="$(this).next().submit();" class="btn btn-link">로그아웃</a>
<form th:action="|/member/logout|" method="POST"></form>

<form sec:authorize="isAuthenticated()" hidden th:action="|/member/logout|" method="POST"></form>
<form sec:authorize="isAuthenticate d()" hidden th:action="|/member/logout|" method="POST"></form>
<span sec:authorize="isAuthenticated()" th:text="|${#authentication.principal.username}님 환영합니다.|"></span>
<span sec:authorize="isAuthenticated()">당신의 회원번호는 [[${loginedMember.id}]]번입니다.</span>
<span sec:authorize="isAuthenticated()">당신은 [[${loginedMember.createDate}]]에 가입하셨습니다.</span>
<span sec:authorize="isAuthenticated()">당신의 회원번호는 [[${@rq.member.id}]]번입니다.</span>
<span sec:authorize="isAuthenticated()">당신은 [[${@rq.member.createDate}]]에 가입하셨습니다.</span>
</header>
<main layout:fragment="main"></main>

Expand Down

0 comments on commit bef4466

Please sign in to comment.