Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

비 로그인 사용자 처리 본문

Project/블로그 게시판 만들기

비 로그인 사용자 처리

Seung__ 2021. 10. 12. 22:51

1. 로그인 한 사용자만 글 작성 가능.


  • 현재 로그인 없이 글 작성 화면으로 접속을 시도하면 에러가 발생한다.
  • Session에서 로그인 정보를 가져와서 접속 정보를 보여주는데, 이 때 세션이 없으니,
  • memberId가 없어서 발생하는 문제이다.
  • 이 말은 단순 조회도 안된다는 얘기다.. ㅋㅋㅋㅋ 실제로도 안된다.
aused by: org.attoparser.ParseException: Exception evaluating SpringEL expression:
"member.userId" (template: "post/addform" - line 18, col 26)

 

 

2. PostController


  • 비 로그인 Guest가 접속하는 경우 Guest계정을 만들어서 return 해주자.
    @GetMapping
    public String posts(Model model, HttpServletRequest request) {

        MemberDto loginMemberDto = getLoginMember(request);

        List<Post> posts = postService.findAll();
        List<PostDto> postsDto = getPostDtos(posts);

        loginMemberDto = checkAndReturnNonLoginGuest(loginMemberDto);
        model.addAttribute("member", loginMemberDto);
        model.addAttribute("posts", postsDto);
        model.addAttribute("searchForm", new SearchForm());


        return "post/posts";
    }

    private MemberDto checkAndReturnNonLoginGuest(MemberDto loginMemberDto) {
        if (loginMemberDto == null){
            log.info("비 로그인 사용자 접속");
            loginMemberDto = new MemberDto();
            loginMemberDto.setUserId("guest");
        }
        return loginMemberDto;
    }
  • 게시글 등록, 삭제 등에 직접 접속하는 경우 "/posts"로 redirect 시켜버림.

 

3. View


  • 조건에 따른 비활성화를 위해 th:disabled 활용
  • Guest일 경우 게시글 등록 버튼을 비활성화
        <div class="col">
            <button class="btn btn-primary float-end"
                    onclick="location.href='addForm.html'"
                    th:onclick="|location.href='@{/posts/new/form}'|"
                    type="button" th:disabled="${member.userId}=='guest'">게시글 등록</button>
        </div>
  • Guest일 경우 댓글 등록 비활성화
        <div class="input-group mb-3; form-group">
            <input type="text" class="form-control" th:field="*{content}" id="commentString" placeholder="댓글 입력" aria-label="Recipient's username" aria-describedby="button-addon2">
            <button class="btn btn-outline-primary" type="submit" id="button-addon2" th:disabled="${member.userId}=='guest'">입력</button>
        </div>

 

 

4. 결과


  • guest인 경우 "게시글 등록"버튼 비활성화

  • 직접 "/posts/new/form"에 접속하는 경우
    • "/posts"로  redirect 시켜버림.

  • 댓글 작성도 비활성화 시킴.

 

 

5. 앞으로


  • est용 data 서버시작할 때 DB에 올리기
  • Listener
    • createdAt, updatedAt등
  • 게시글에 작성자 표시
  • view 정리
  • 게시글 검색
    • 검색 옵션 추가 : 작성자, 제목 구분
  • 영속성 전이 설정
    • 게시글 삭제
    • 회원 탈퇴
  • 댓글 삭제 버튼
  • 글 수정 기능 추가
  • 대댓글
  • 검증 & 예외처리
    • 회원 가입시 필수 정보 지정.
    • 특수문자, 공백 검증 등(email  형식?)
    • Spring제공 Validator로 변경.
  • 인증처리
    • 로그인한 사용자만 글 & 댓글 작성 가능.
    • 본인이 작성한 글, 댓글만 수정/삭제 가능
    • 관리자는 모든 권한
  • 예외처리
  • 페이징 처리
  • 컬렉션 조회 최적화

 

6. GitHub: 211011 Handling NonLogin Guest


 

GitHub - bsh6463/blog

Contribute to bsh6463/blog development by creating an account on GitHub.

github.com

 

Comments