개인 프로젝트 28

react 조건부 렌더링

localstorage로 부터 authority를 받아 해당 authority에 맞게 렌더링 하도록 구현 : 로그인 시도 후에 권한 설정 및 accessToken과 refreshToken을 받는 곳 import React, { useEffect } from "react"; import queryString from "query-string"; import { useNavigate } from "react-router-dom"; const Redirect = () => { const navigate = useNavigate(); const token = queryString.parse(window.location.search); //yarn add query-string useEffect(() => { i..

jwt를 이용한 조건부 렌더링 처리 고민

나만의 블로그 만들기에선 댓글을 달기 위해서 로그인이 필요할 뿐 로그인을 하더라도 글을 쓰거나 삭제하거나 할 순 없다.(정말 나만의 블로그이기 때문에 나만 포스팅에 관한 일을 할 수 있도록 하고 싶었다.) 그런데 jwt로 로그인을 구현 했다 보니 로그인 이후에 '글쓰기 버튼'과 같은 것들은 관리자인 나에게만 보여야 하도록 하려고 하는데 어려움이 있다. (jwt토큰으로는 권한을 확인 할 수 없다. 토큰을 spring에서 검증하고 해당하는 username으로 user테이블에서 권한을 확인하고 spring security에서 요청을 허용하거나 거부하기 때문이다.) 그래서 로그인을 하면 블로그의 주인인 나와 일반 로그인 이용자를 어떻게 구별 지을 수 있을까? -> redirect페이지(쿼리 스트링으로 acces..

springSecruty+JWT+react+Oauth2

여기는 드는 의문 : 나는 로그아웃 했는데 db에 남아 있는 refreshToken 때문에 멋대로 accessToken이 발급 되면 어쩌지... -> 일단 setInterval(accessToken의 주기적 재발급)의 경우 로그아웃하면 멈추도록 했음, 기존의 refreshToken의 경우 Oauth2로그인 시 해당 username의 refreshToken은 삭제하도록 되어 있음, 그래도 logout시 db의 refreshToken을 삭제하면 refreshToken이 탈취당하더라도 내 정보를 좀 더 지킬 수 있을 것 같다는 생각이 들어 구현해볼 예정

springSecruty+JWT+react+Oauth2 (react)

: 임시 로그인 페이지 import { Badge } from "react-bootstrap"; import React from "react"; import { useNavigate } from "react-router-dom"; const Login = () => { const navigate = useNavigate(); const handleLogin = () => { window.location.href = `http://localhost:8080/oauth2/authorization/google`; }; const handleLogout = () => { //accessToken과 refreshToken을 지움 localStorage.removeItem("Tnut's accessToken"); ..

springSecurity+react+Oauth2(google)+jwt (Spring)

여기저기서 참고한 자료들을 가지고 혼자서 구현해 본 것이라 예외처리라던지 다소 불안정한 요소가 많지만 나중에 다듬을 때 참고하기 위해서 작성, 글 순서는 대략적인 구현 순서임, 일반 로그인은 구현 안함 오직 Oauth2로만 로그인 하도록 되어 있음 참고한 자료들: https://docs.spring.io/spring-security/reference/servlet/oauth2/resource-server/bearer-tokens.html OAuth 2.0 Bearer Tokens :: Spring Security By default, Resource Server looks for a bearer token in the Authorization header. This, however, can be cust..

로그 아웃 고민

방법 1: logout을 하면 AccessToken에 임의의 값을 넣어준다 -> 매우 간편 -> 리액트에서 조건부 렌더링을 할 때 어떻게 해야할까... 방법 2: logout을 하면 localStorage를 비운다. -> 조건부 렌더링이 비교적 간단함 -> db에 남아 있는 refreshToken은 어떻게 되는 거지? 선택 방법 2: 방법 1은 후에 login된 사용자로 조건부 rendering을 할 때 localstorage의 accessToken값의 유무로 하기 어렵다고 판단, 방법 2의 db의 refreshToken의 경우 로그아웃시 요청으로 지울 예정

refresh 토큰 후처리 고민

accessToken이 만료되어 refresh 토큰을 검증하는 단계로 옴 refresh 토큰 -refresh 토큰이 만료되었다면 -> 로그인 재시도 -refresh 토큰이 유효하다면 ->ⅰ) 요청에 응답 후 access토큰 재발급 ->ⅱ) access 토큰 재발급 후 해당 access 토큰 으로 재요청 고민에 대한 답: refresh 토큰은 요청에 대한 응답을 위한 토큰이 아님 access토큰을 재발급해주기 위한 토큰으로 ii ) 로 선택

카테고리 달기 (react)

카테고리를 저장하고 이를 다시 boardSaveForm으로 전달 할 때 조금씩의 변경사항들이 있어 그냥 코드 복붙하고 실행결과만 기록 public class CategoryNameList { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String categoryName; private Long lcId; //(largeCategoryId) private Long scId; //(subCategoryId) @Enumerated(EnumType.STRING) private CategoryType categoryType; } public class Board { // 보드에 담길 내용: 제목, 내용, 댓글, ..