7달 전 · 익명 님의 질문
유저 vs 세션 분석의 차이점?
구글 에너레틱스를 공부하다가 세션과 유저 별 페이지뷰를 통해 유저의 행동을 예측할 수 있다는 부분을 읽게 되었습니다. 대표적인 예시를 통해 세션 별로 볼 때는 어떤 로그 분석을 할 수 있을지, 그리고 유저 별로 보았을 때는 어떤 행동 로그를 분석하면 되는지, 실무적인 예시가 있으면 좋을 것 같아요. 혹시 알려주실수 있는 분 계실까요?
PM/PO/기획자
#구글에너레틱스
답변 0
댓글 0
조회 62
7달 전 · 경범 님의 질문
토큰 관리, 로그인 유지를 현업에서는 어떻게 진행하는지 궁금합니다
안녕하세요 토이프로젝트로 인증/ 인가 파트를 맡게되었습니다 이전의 프로젝트에서는 로컬스토리지과 전역 상태 관리 라이브러리의 persist를 활용하여 토큰과 로그인상태를 로컬스토리지에 저장하여 진행하였습니다 하지만 이번에 새롭게 진행하는 프로젝트를 위해 다양한 웹사이트를 개발자도구로 참고하였지만 토큰이나 isLogined와 같이 로그인 여부 상태를 로컬, 세션 스토리지에서 관리하는 사이트를 확인할 수 없었고, 검색을 통해 보안을 위해 Http Only 쿠키를 통해 액세스 토큰과 리프레시 토큰을 관리하는 방법이 일반적이란것을 알 수 있었습니다 이러한 방법에서 몇 가지 궁금증이 생겨 질문을 드리고 싶습니다 1. 현업에서는 어떠한 방식으로 토큰을 관리하고 로그인 상태를 유지하나요? 2. 만약 http only 쿠키를 사용하게 된다면, 쿠키에 저장된 토큰을 클라이언트에서 조작할 수 없으니, 매번 페이지를 렌더링 할 때마다 토큰이 유효한지 api 호출을 통해서 로그인 상태를 유지해야하는걸까요? (api를 통해 토큰이 유효하다면 로그인 유지, 아니라면 로그인 페이지 리다이렉션) 3. http only 쿠키 외에 인증 / 인가를 위해서 클라이언트 단에서 보안적으로 신경써야하는 부분은 어떠한것이 있을까요? 가장 기본적이지만 가장 어려운 인증/인가 부분 현업 선배님들께서는 어떻게 진행하시는지 답변해주시면 감사하겠습니다
개발자
#front
#react
#login
#jwt
#프론트엔드
답변 0
댓글 0
추천해요 2
조회 124
9달 전 · 익명 님의 질문
로그인 구현 관련 질문 subdomain.com
안녕하세요 슬랙처럼 로그인을 하면 워크스페이스 리스트가 나오고 해당 워크스페이스를 클릭하면 해당 워크 스페이스로 로그인이 되는 페이지를 구현하려 하는데요. Next.js를 사용중이고 iron-session 라이브러리 통해서 세션을 저장하고 있습니다. ex) app.oursite.com <- 통합 로그인 페이지 워크스페이스 클릭하면 해당 워크스페이스 로그인을 하고 세션을 저장해서 워크 스페이스 사이트로 redirect 시키려 하는데, const session = await getIronSession<Session>(cookies(), { cookieName: 'cookie', password: IRON_SESSION_SECRET_KEY, cookieOptions: { secure: false, // 로컬 테스트에서는 false, 실제 배포에서는 true로 설정 sameSite: 'Lax', // sameSite 옵션을 Lax로 설정 domain: 'localhost', // 로컬 테스트 시 domain 설정을 제거하거나 localhost로 설정 path: '/', }, }); {workspace1}.ourstie.com {workspace2}.ourstie.com 세션 저장이랑 redirect 처리했을때 세션 저장하고 해당 페이지 확인은 하였는데 해당 페이지에서 로그인 인증은 제대로 되지 않고 있습니다. 로그인 페이지로 이동되더라고요 로그인이 안되는 원인으로 짐작가는게 있으면 알려주시면 감사하겠습니다
개발자
#로그인
#통합로그인
#세션
#nextjs
답변 0
댓글 0
보충이 필요해요 2
조회 58
5달 전 · 성현 님의 답변 업데이트
개발자 모드 함수 실행 방지
안녕하세요. 스스로 개발자라고도 하기 민망한 신입 개발자입니다. 이번에 자바스크립트를 이용한 쿠폰 다운로드 로직을 구현하면서 예전 사람이 만들어 놓은 코드를 참고하면서 문제가 발생했습니다. 기존 방식은 프론트단에 있는 데이터를 ajax에 담아 서버 측에서 검증을 받은 후 쿠폰 다운로드 함수를 실행하여 쿠폰을 다운로드 받아왔습니다. 예시) 로그인체크 함수 (ajax로 로그인 검증 함수로 보냄) 응답이 성공일시 -> 참여이력체크 함수 (ajax로 로그인 검증 함수로 보냄 -> 반복 -> 검증 전부 성공시 쿠폰 다운로드 함수 실행 여기서 문제는 개발자 모드 콘솔창에 쿠폰 다운로드 함수를 호출하면 검증과정 없이 쿠폰이 다운로드 받아지는 것입니다. 이것을 방지하기 위해 서버단에서는 세션, 토큰을 사용하는 방법이 있다는 것은 찾았지만 클라이언트 측, 즉 자바스크립트 코드로 개발자 모드에서 함수를 무단으로 호출하는 것을 방지하는 방법이 있을까요? 밑에 원하는 해결 방안을 적어 놓겠습니다 1. 개발자 모드 실행 시 경고창, 창 이동 방법 - 이 방법은 제외입니다. 2. 클로저 사용 - 익명 함수로 다운로드 함수를 작성 시 검증 과정 마지막에 호출하지 못하더군요. 제가 클로저를 잘못 이해하고 사용한다 생각하니 클로저로 해결할 수 있는 방법이 있다면 가르쳐주시면 감사하겠습니다. 3. 그 이외에 방법 자바스크립트 코드로 해결하는 방법이 있으면 좋겠습니다.
개발자
#javascript
답변 4
댓글 2
보충이 필요해요 1
조회 613
일 년 전 · 류호준 님의 새로운 답변
이거 해킹당한건가요?
Ec2에 개인 프로젝트를 배포했습니다. 그런데 요청이 시간 초과로 계속 실패해서 톰캣 매니저 페이지에 들어가봤습니다. “/web-server”라는 새로운 페이지가 생겨있고, 사용자도 거의 없어서 저 혼자만 드나드는 사이트인데 세션이 20개 가까이 생겨있더라구요. Ec2 cpu 사용율도 100% 가까이 찍힌 기록도 발견했습니다. 이거 해킹당한건가요? 현재는 인스턴스를 중지해 놓은 상태입니다.
개발자
#해킹
답변 2
댓글 0
조회 551
일 년 전 · 장성호 님의 새로운 댓글
토큰 기반 인증에서 리프레쉬 토큰 관리
JWT로 토큰 기반 인증을 구현할 때 궁금한게 좀 생겼습니다! 리프레쉬 토큰은 DB에 저장해볼까 했는데 그러면 토큰 기반 인증이 아니라 세션 기반 인증인 것 같아서 고민입니다. DB에 저장하는 순간 Stateless 장점도 없어지는 것 같구… Stateless로 구현한다해도 로그아웃 때문에 블랙리스트 관리해야한다는데, 이러면 결국 Stateful인거 같구… 다른 분들은 어떻게 구현하시는지 궁금합니다! 일단 이렇게 고민해봤습니다. --- <1번 시나리오 - 리프레쉬 토큰을 DB에 저장하지 않는 시나리오> 1. 액세스 토큰이랑 리프레쉬 토큰은 클라이언트가 저장하고 서버는 저장하지 않는다. 2. 클라이언트 요청이 왔을 때 리프레쉬 토큰이 만료되지 않았으면 액세스 토큰을 발급해주고, 만료됐으면 액세스 토큰을 발급해주지 않는다. (401 또는 403) 장점 - DB에 접근할 이유가 없으므로 Stateless 하다. 단점 - 로그아웃을 했을 때 토큰 자체는 무효화시킬 수 있는 방법이 없다. <2번 시나리오 - 리프레쉬 토큰을 DB에 저장하는 시나리오> 1. 액세스 토큰이랑 리프레쉬 토큰은 클라이언트와 서버가 각각 저장한다. 2. 클라이언트 요청이 왔을 때 리프레쉬 토큰이 만료되지 않았으면 액세스 토큰을 발급해주고, 만료됐으면 액세스 토큰을 발급해주지 않는다. (401 또는 403) 장점 - 로그아웃을 했을 때 토큰 자체는 무효화시킬 수 있다. 단점 - DB를 접근해야하므로 Stateful 하다. => 클러스터링이나 샤딩이 도입되면 복잡도가 올라간다. --- 1번 시나리오 단점을 극복하려고 블랙 리스트를 Redis에 관리한다는 글들을 종종 봤습니다. 블랙 리스트를 도입 안했을 때 문제는 실제로 겪어본 적이 있어서 공감은 가는데, 이러면 사실상 세션 쓰는거랑 똑같지 않나라는 생각이 듭니다. 인증시 결국 Redis 같은 DB에 접근해서 직접 확인하는 거니까요. 한편으로는 서비스가 매우 많이 커지면 세션이 부담돼서 토큰 기반 인증으로 전환한다는데, 파면 팔수록 점점 세션 기반 인증으로 바뀌는 것 같아서 고민입니다.
개발자
#인증
#토큰
#db
#stateless
#stateful
답변 1
댓글 1
조회 159
일 년 전 · olcloolzj 님의 새로운 댓글
Next.js에서 page.js
안녕하세요. Next.js를 공부하던 중 궁금한점이 생겨 질문드립니다 ! 제가 app/page.js 파일에 사용자가 로그인했다면 메인화면 컴포넌트를 보여주고, 로그인하지 않았다면 로그인 컴포넌트를 보여주도록 작성해두었습니다. 그런데 궁금한 점이 로그인을 했는지 유무를 getserversession을 통해 세션을 확인해서 판단합니다. 그런데 이때 비동기처리를 위해 await를 붙여줘야하는데, 그렇다면 page.js의 Home() 자체에 async를 붙여주어야합니다. 그래서 해당 방법을 사용해 제가 생각한 로직은 구현했습니다. 그런데 궁금한 점이 page.js에서 export default async function Home() 이런식으로 작성해도 되나요? 제가 page.js의 역할을 정확히 이해하지 못한 느낌이 들어 질문드립니다. (챗 지피티에게 물어보니 13버전 이전의 내용만 알고 있는 듯합니다. 또한 컴포넌트 자체에 async를 붙이면 안된다고 답변이 옵니다 !)
개발자
#next.js
답변 1
댓글 1
추천해요 1
조회 491
3달 전 · 구나미 님의 댓글 업데이트
스프링 시큐리티를 꼭 써야할까요?
스프링 시큐리티를 왜 꼭 써야할까요? 사실 세션은 개발자가 직접 만들수도 있고, 보안을 철저하게 쓰면 되는거잖아요 단순히 편리해서 인가요?
개발자
#스프링시큐리티
답변 7
댓글 7
추천해요 3
보충이 필요해요 3
조회 3,591
일 년 전 · 박대영 님의 새로운 댓글
프론트에서 세션으로 로그인 유지 하려는 과정 중 문제가 생겼습니다.
안녕하세요 현재 제가 백엔드(스프링)를 진행하고 있고, 지인이 프론트를 진행하고 있습니다. JWT를 진행하기 전 세션을 통해서 로그인을 해보려고 합니다. 결론부터 말씀 드리자면 쿠키값에 세션id가 저장이 안되어 로그인 유지가 안되는 상황입니다. 사용하고 있는 로그인 방식은 Spring Security FormLogin 방식입니다. 복잡하게지만 백엔드 쪽에서의 문제인지 코드를 한 번 올려드리겠습니다. 생각 1. 인텔리제이 내에서 html을 등록하여 진행하면 같은 도메인, 포트이기 때문에 시큐리티가 자동으로 세션을 만들고 그 세션을 통해 자동으로 유지된다고 생각합니다. 생각2. 하지만, 프론트, 백엔드 서버 포트가 다르기에 successHandler을 통해서 쿠키에 세션ID를 담아서 보내야 된다고 생각했습니다. 하지만, 세션ID는 유지가 되지 않고, 그것에 대해 계속 알아보던 중 해결책을 못찾아 질문을 드립니다. 프론트단에서 따로 처리를 해야되는 걸까요? 아니면 제가 제대로 설정을 못하고 있는 것일까요
개발자
#spring
#프론트
#백엔드
#세션
#session
답변 1
댓글 4
조회 254
일 년 전 · 익명 님의 질문
[node.js] 세션을 이용한 로그인 구현 중 브라우저 쿠키의 maxAge 초기화 안 되는 문제 발생
Node.js(v18.17.0) + TypeScript로 개발을 진행하고 있습니다. express 로 서버를 구축했고, express-session , session-file-store 라이브러리를 사용해서 로그인 기능을 구현했습니다. 제가 원하는 것은 세션 만료 시간을 연장하는 기능을 만드는 것인데... 서버에서는 세션 쿠키 만료 시간이 재설정(초기화)가 되는데 브라우저에 저장된 쿠키 만료 시간은 그대로인 상태라 연장이 되지 않습니다. 처음 제 코드는 이렇습니다. ```ts export const extendSession = async (req: Request, res: Response) => { req.session.resetMaxAge(); res.json({ success: true, message: '세션 연장 성공', expiredTime: req.session.cookie.expires.getTime(), }); }; ``` 이런 식으로 resetMaxAge() 함수를 통해서 만료 시간을 연장할 수 있을거라 생각했습니다. (트라이캐치문은 생략하였습니다.) 콘솔에 값을 확인해봤을 때에도 연장이 잘 된 것으로 보이는데 브라우저에 저장된 쿠키의 만료 시간을 확인해보면 최초의 쿠키 값 그대로였습니다. 이를 해결하기 위해서 만료 시간을 따로 정해서 줘보기도 했습니다. `req.session.cookie.maxAge = 3600000;` 하지만 마찬가지로 세션 쿠키의 만료 시간은 바뀌지만 브라우저에 저장된 쿠키의 expires가 변하지 않았습니다. 따로 헤더를 줘보아도 새로운 쿠키가 생성될 뿐 해결책이 되지 않았습니다. `res.setHeader('Set-Cookie', 'Max-Age=3600000')` express-session 미들웨어가 자동으로 set-cookie 헤더를 설정해주어서 제가 여기에 어떻게 접근할 수 있을지 모르겠습니다. 브라우저의 쿠키가 초기화 적용을 받지 못하는 것이 문제인 것 같은데... 원인은 대충 알 것 같으면서 해결책을 모르겠습니다. session 설정은 이렇습니다! ```ts app.use( session({ secret: process.env.SESSION_SECRET_KEY, resave: false, saveUninitialized: false, cookie: { sameSite: 'lax', secure: false, httpOnly: true, maxAge: 1000 * 60 * 5, }, store: new FileStore({ reapInterval: 3000, }), }), ); ```
개발자
#node.js
#express
#express-session
#session
#cookie
답변 0
댓글 0
조회 183
일 년 전 · 조용구 님의 새로운 답변
JWT 로그아웃 관련 질문 입니다.
JWT 를 사용하여 로그인 기능을 구현 하였습니다. 저같은 경우에는 로그인시 에세스토큰과 리플레시 토큰을 생성해서 사용중이 mysql 테이블에 저장을하고 토큰 두개를 반환하면 프론트(리엑트) 에서 세션 스토리지에 저장해서 에세스 토큰으로 통신하다가 만료가 되면 리플레시를 요청하고 리플레시를 보내서 데이터베이스에서 유효시간과 변형이 되지 않은것을 확인하면 다시 에세스 토큰을 발급하는 시스템으로 구현을 했는데요 이때 에세스 토큰은 30분 리플레시 토큰은 8시간을 주고 개발 하였습니다. 그런데 생각해보니 로그아웃을 구현 안했더라고요 프론트에서는 로그아웃하면 세션스토리지를 날려버리면 끝인데 RestAPI라 데이터만 주고 받으면 되는 형식이라 딱이 제가 받는게 없다는겨죠 그렇게 로그아웃을 찾아 보다가 다른분들은 Redis를 사용하여 리플레시 토큰을 입력받은 아이디를 key로 저장한후에 에세스를 발급하고 로그아웃하면 그토큰을 블랙리스트로 만들더군요 만료시간후에 자동 삭제되게 설정도 하는거 같아요 이게 어느 방향으로 개발하는게 맞는지 도통 모르겠습니다. 로그아웃 할때마다 리플레시를 무효화 시키고 로그인할 때 새로 생성해서 저장하는게 맞는지 로그아웃해도 데이터베이스에 리플레시 유효기간이 남아 있다면 그것을 계속 사용하는게 맞는건지 어느 글들을 보면 리플레시를 7일 한달도 주는 경우가 있더라구요... 그래서 잘 모르겠습니다. 로그인 -> 에세스,리플레시토큰 발급 -> 프론트 세션스토리지 저장 -> 에세스로 통신 -> 만료되면 리플레시 요청 -> 프론트에서 리플레시 통신 -> 데이터 베이스 확인후 유효검사후 에세스 다시 발급 -> 재로그인시 유효시간이 남으면 기존의 리플레시 토큰 사용 로그인 -> 에세스,리플레시토큰 발급 -> ........ -> 로그아웃시 Redis에 블랙리스트로 저장 -> 블랙리스트 접근불가 -> 다시로그인시 리플레시 새로발급 실무에서는 어떻게들 관리하시는지 알려주시면 감사하겠습니다.
개발자
#jwt
#로그아웃
#redis
답변 1
댓글 0
추천해요 1
조회 365
일 년 전 · 이동기 님의 새로운 답변
백엔드 스프링부트 질문드립니다.
스프링부트 입문 단계인데 배워갈 수록 엄청나게 많이 공부해야된다는 것을 깨닫습니다.. 당장 게시판 만들기는 끝냈고, 세션 로그인 구현도 미숙하지만 조금 할 수 있어서 다른 프로젝트 들이 박아보려고 하는데 api명세서 작성같은 기획 부분을 어떻게 해야 할 지 도저히 감을 못잡겠습니다. 그리고 이 정도의 실력으로 동아리에 지원해서 다른 동아리원에게 피해주지 않고 프로젝트 이어나갈 수 있을까요?? 혼자 실력 쌓는게 더 좋을까요..? 선택을 못하겠습니다 ㅠ (물론 공부는 계속 열심히 할 것입니다) 요약 1. api명세서와 같이 기획부분은 어디서 어떻게 배우는 것이 가장 효율적일까요? 2. 현재 실력으로 동아리에 지원해봐도 될까요? 괜찮는 동아리 있으면 추천도 부탁드립니다 개발 고수님들 초보자를 바른 길로 이끌어주십쇼....😂
개발자
#백엔드
#스프링부트
#동아리
답변 1
댓글 0
조회 80
일 년 전 · 백승훈 님의 답변 업데이트
Spring WebSocket 통신 중 HttpOnly 쿠키에 저장된 JWT 토큰 접근 문제
안녕하세요, Spring과 React를 활용하여 실시간 채팅 기능을 구현 중인 학생입니다. 현재 저희 시스템은 사용자가 로그인을 성공하면, JWT 토큰을 생성하여 이를 HttpOnly 쿠키에 저장하고 있습니다. 이후 해당 토큰을 이용해서 사용자의 인증 및 인가를 처리합니다. 그리고 웹소켓을 화룡해 채팅 기능을 구현하고 있는데, 사용자가 채팅 메시지를 웹소켓을 통해 서버로 전송할 때마다, 해당 사용자의 JWT 토큰을 검사하여 유효한 사용자인지 확인하려고 합니다. 그러나 현재 쿠키가 HttpOnly로 설정되어 있어서, React에서 쿠키에 접근할 수 없습니다. 따라서 웹소켓 메시지를 보낼 때마다 JWT 토큰을 메시지에 포함시키지 못하고 있습니다. 구글링해서 찾아보니 다른 개발자들의 경우 클라이언트에서 헤더에 토큰을 포함하여 서버로 전송하고, 서버에서는 StompHeaderAccessor의 getFirstNativeHeader 메서드를 사용하여 토큰을 받아 사용자 검증을 하는 방식을 주로 사용하는 것 같습니다. 그러나 저희 시스템에서는 이 방식을 사용할 수 없어, 다른 해결 방안을 찾고 있습니다. 현재 제가 생각한 방식은 웹소켓 연결 시 웹소켓 세션에 해당 사용자의 토큰값을 저장하여 채팅 메시지가 서버로 전송될 때마다, 웹소켓 세션에 저장된 토큰값을 검증하는 방식입니다. 만약, 이 방식을 사용한다면 사용자 토큰값의 유효 기간이 끝나면 리프래시 토큰을 사용한 사용자 토큰 재발급 방식은 사용자 웹 브라우저 쿠키에 접근하지 못하니 불가능한가요? HttpOnly 쿠키에 저장된 JWT 토큰을 웹소켓 통신에서 어떻게 활용할 수 있을지 조언해주시면 감사하겠습니다.
개발자
#spring
#websocket
#react
#jwt
답변 1
댓글 0
조회 406
일 년 전 · 이창민 님의 새로운 댓글
JWT vs 세션 사용
안녕하세요, 프로젝트를 진행하던 중에 JWT와 세션 사용에 대한 선택을 결정해야 했는데요. 일단, 클라이언트의 상태를 stateless하게 관리하고 서버의 부하를 줄이기 위한 선택으로 jwt를 도입하게 되었습니다. 근데 문득 궁금점이 생기더라구요. 1. jwt 토큰의 refresh 토큰 관리, logout 등의 기능을 위해 redis를 도입했는데, 세션도 서버의 메모리가 아니라 redis를 사용하게 되면 결국 서버의 부하를 줄여줄 수 있으니, jwt를 굳이 도입하는 이유가 있을까요? 1-1. 스스로 고민해본 결과로는 결국 정보를 jwt 토큰에 저장하느냐, 세션을 사용해서 세션의 정보를 DB에 저장하느냐 그 차이인 것 같은데 맞는지 궁금합니다. 그래서, 결국 redis를 사용하더라도 redis 자체의 부하를 줄여주지 못하는 건가 싶습니다.
개발자
#jwt
#세션
#redis
#인증
#인가
답변 3
댓글 2
추천해요 8
조회 2,247
일 년 전 · 김대현 님의 답변 업데이트
4년 다니던 회사가 연봉 통보로 바뀜, 이직이 답인지 고민이됩니다 조언 부탁드립니다 ..
안녕하세요. 😊 저는 비전공자로 취업한 케이스입니다. 현재는 3년째 2개월째 재직중입니다. 하하 사실 개발을 시작할 때는 개발자로 취업했으면 좋겠다는 마음뿐이었던 것 같습니다. 처음 면접 본 회사에 합격했는데 우리 회사가 너무 좋아서 정말 열심히 회사 생활을 해온것같아요. 저는 요즘 타회사 개발자들 커뮤니티에서 이거 쓴데 ~ 하는 것들은 대부분 찾아보는 취미가 있습니다. 새로운거 찾아보는걸 쫌 좋아해요 암튼 저희회사 처음 입사했을때는 mvc 프로젝트에 svn 으로 코드 병합하고 jsp 사용하구 일단 프로젝트 엄청 무겁고 로딩하는데 3분걸리고 코드 해석하는데 오랜 시간이 걸리는 . . . . 암튼 그런 레거시 플젝뿐이었어요. ㅠㅠ 제 입사 첫 업무가 vue 랑 스프링부트로 게시판 만들어보랬는데 회사에 vue 쓸줄 아는 사람은 한명도 없고 ; 결국 제 입사동기랑 둘이서 vue랑 스프링부트로 해보다 두달째인가? 지났을때 뷰 템플릿 찾아봐라 > 네비게이션 만들어라 > 사내 관리 시스템 만들어라 이래서 아직까지 잘 쓰고있는? 프로젝트를 만들었거든여 (지금보면 고치고 싶은곳 투성이라 여유있을때 리팩토링 시도함 . . .) 그리구 git 으로 바꾸자구 적극 건의해서 svn에서 gitlab 으로 갈아타구 팀원들 보라구 gitlab 사용법도 문서화해서 공유하구 작년부터 시작한 새 프로젝트는 더 애정이 깊은데 jpa 를 너무 쓰고 싶어서 진짜 엄청 졸라서 도입하고 사내에서 일끝나고 쿠버네티스 스터디 해서 쿠버네티스도 도입해서 (제가도입은안했지만) 간단한 매니페스트 작성해서 웹, 크론잡 올리는건 할 수있구 레디스도 쿠베에 구축해서 웹 세션관리 레디스에서 해서 각 파드에서 세션 공유할 수 있게 하고 레트로핏이 빠르대서 그것도 도입하구 . . . 다른분들이 이거보면 별거 아니네 할수 있지만 !!! 저한테는 진짜 소중한 프로젝트들이란말이에요 !!(?) 회사에서 썩어가던 . . 고인물 프로젝트 전부 스프링부트로 대체해서 지겹게 발생하던 프로젝트간에 의존성 충돌도 해결하구 . . . 심심할때는 데몬들로 돌리던거 플랫폼으로 ui 랑 api 혼자해서 배포하구 돌아보니 회사 프로젝트에 제가 엄청난 애정을 쏟았네요 ...... 암튼 이제는 회사 분들도 진짜 정 많이들고 좋거든요 개발하다 고민생기면 같이 더 나은 방법 찾아주려고 고민해주는 문화가 점점 자리 잡고 있어서 . . . 만족함 !!!! ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 서론이 길어졌는데 . . . 제 고민은 이제 말씀드릴께요!! 저희 회사에서 2800 초봉으로 시작해서 3400 > 3900 이렇게 올랐는데 사실 연협과정에서 만족했거든요 (적은건알지만!!) 올해부터 저희회사가 연봉협상이 아닌 연봉통보라는거에요 🥹🥹🥹 진짜 제 고민은 이제 우리 회사에 애정을 느끼는데 . . . . 연봉 통보로 바뀌면 전 이직을 하고 싶은데 . . . . 하하 다른 개발자 분들의 생각은 어떤지 여쭤보고 싶습니다 . . . 찐조언 부탁드립니다 . . .
투표
개발자
#이직
#백엔드
#연봉통보
답변 1
댓글 0
추천해요 2
조회 635
일 년 전 · 김태우 님의 답변 업데이트
클라이언트에서 사용자가 로그인 상태인지 판별하는 방법
일반적으로 웹/앱 클라이언트에서 사용자가 로그인 상태인지 어떻게 확인하는지 궁금합니다. 1. 서비스에 접속하고 페이지를 이동할 때마다 매번 유저 정보를 가져오는 api를 호출해서 에러가 나면 로그아웃 상태로 판단한다. 2. 서비스에 접속할 때 한번 유저 정보 api를 호출하고 에러가 나면 로그인 api를 호출해서 성공할 때까지 로그아웃 상태로 판단한다. 3. 쿠키나 로컬 스토리지 같은 곳에 세션 id가 있는지 여부로 판단한다. 지금 생각해본건 이렇게 세가지 인데 일반적으로 어떻게 로그인 상태인지 매번 판별하는지 궁금합니다! 그리고 환경을 nextjs로 가정했을때 이 유저 api 호출을 ssr과 csr중 어디서 호출하는게 좋을지도 알고 싶습니다.
개발자
#auth
#react
#frontend
답변 2
댓글 0
추천해요 5
조회 1,221
일 년 전 · 이상선 님의 새로운 답변
별도의 인증서버가 있는 환경에서 jwt를 통한 인증 질문
jwt는 제대로 다뤄본 적이 없어 요즘 로컬환경에서 이런저런 공부를 하고 있습니다. 구성은 이렇습니다 웹서버(jquery + 스프링부트 with thymeleaf) 인증서버(스프링부트로 만든 Rest API) 로그인과 토큰 발급에 대한 일련의 과정이 헷갈려서 제가 제대로 이해하고 있는게 맞는지 궁금합니다.. 브라우저에서 로그인 요청 -> 웹서버에서 인증서버로 로그인 요청 -> 인증서버가 DB조회후 액세스토큰, 리프레쉬토큰 발급후 웹서버에 전달 -> 웹서버의 세션에 토큰정보 저장(?) -> 클라이언트단에 쿠키로 토큰정보 저장 -> 다음 요청부터 헤더에 토큰 첨부해서 요청 -> 웹서버는 세션에 있는 토큰과 클라이언트의 토큰을 비교하여 인증여부 확인 (how?) 1. 웹서버의 세션에 토큰정보를 저장하는것이 맞는지 2. 만약 스프링 시큐리티를 연동하려면 웹서버단에서 설정해야하는게 맞는지 대부분의 예시가 별도의 api나 인증서버를 두지 않고 한 프로젝트에서 처리하는것같아서 봐도 헷갈리네요.. 맞는지 알려주시면 감사하겠습니다..!
개발자
#jwt
#springboot
#spring-security
답변 2
댓글 0
조회 119
일 년 전 · 백승훈 님의 답변 업데이트
프론트엔드 웹뷰 질문입니다.
1. 웹뷰 작업은 vite react 로 해도 괜찮을까요? 구글링 했을때 레퍼런스가 많지 않아서 정확하게 결정을 못내리겠습니다 2. Next 로 작업을 한다면 SSR 이외에 이점은 뭐가 있을까요? 3. 웹뷰 작업 후 React 는 AWS 를 이용한다면 S3 버킷에 올려 퍼블릭 엑세스 할당 후 클라우드 프론트를 태워서 호스팅 하면 될 것 같은데 Next 는 어떤 방식으로 호스팅을 할까요? 기존에 Vercel 과 EC2 위에 Next 프로젝트를 호스팅 한 경험이 있습니다. 4.앱에서 로그인이 된 상태에서 웹뷰를 띄었을때 세션을 유지하는 방법은 어떻게 될까요? 로그인 인증은 JWT 방식입니다. 네이티브 앱에서 로그인 된 상태에서 웹뷰를 띄어서 세션을 유지하는 방법의 플로우를 알려주시면 감사하겠습니다.
개발자
#webview
#react
#frontend
#web
#next.js
답변 1
댓글 0
조회 571
일 년 전 · 익명 님의 질문
WebVR 구현 목적으로 하는 프론트엔드 개발자입니다. 공부순서는 추천해주실게 있으실까요?
안녕하세요. 2년 6개월 강제(?) 풀스택에서 최근 프론트엔드로 진로를 정한 웹 개발자입니다. 목적은 웹퍼블리싱도 되는 프론트엔드 개발자 입니다. 구현하고자 하는 토이프로젝트는 Interactive Web 구현, 최종 목적은 WebVR 구현입니다. CSS -> Response Web -> Interactive Web -> WebVR(three.js) 로 공부를 할까 합니다. 현재는 강의 보며 토이프로젝트(Response Web)을 만들어 보고, 출근하면 배운거 써먹어보고 있습니다. 현재 제 레벨은 CSS 스킬이 Figma 를 봤을때 머리속에서 마크업 잘 안그려지고, CSS 개발에서 자주 멈칫, 구글링합니다. 구현된거 수정만 해보았어서, 코드스타일이 없었고 구현순서나 임시 스타일가이드를 정해서 작성해보고 있습니다. JavaScript 스킬은 custom Api 만들고 api 통신해서 여러 data 가져와서 좀 다양한 chart, table에 결과물 산출(간단한 산술식을 곁들어서) 정도, 로그인, 세션, validate, router, 필요함수 기능구현이나 리팩토링, 모듈화 정도만 해봤습니다. 질의문은 위 상황에서 추천해주시거나 수정해주고 싶으신 부분이 있으시다면 혹은 요런게 있다 더라 만이라도 알려주시면 참 감사드리겠습니다.
개발자
#frontend
#웹퍼블리싱
#3d
#webvr
#프론트엔드
답변 0
댓글 0
조회 70
일 년 전 · 김대현 님의 답변 업데이트
스프링부트에서 쿠키를 활용하여 조회수 확인
스프링부트 프로젝트에서 게시글 및 페이지 방문자 카운팅시쿠키를 사용하려고 합니다 질문1: 처음에는 세션을 사용했지만, JWT로 로그인한 경우 세션이 초기화되어 방문한 게시글의 ID를 제대로 불러오지 못하는 문제가 발생하여 쿠키로 전환했습니다. -> 왜 로그인한 경우에 세션을 제대로 못 불러오는지 궁금합니다. 질문2: 방문한 게시글은 3시간 후에 다시 증가할수 있도록 하려고 합니다. 각 게시글의 수만큼 쿠키를 생성하여 maxAge로 확인하는 방법은 비효율적으로 느껴집니다. 그래서 한 쿠키에 여러 게시글의 ID를 배열로 넣어 확인하려고 합니다. 이때는 각 게시글의 시간 확인에 어떤 방법을 사용할 수 있을까요? 감사합니다!
개발자
#springboot
#cookie
#session
#visit-count
답변 1
댓글 0
추천해요 1
보충이 필요해요 1
조회 690
일 년 전 · 오두용 님의 답변 업데이트
[next-auth] 서버사이드에서 session 생성 및 수정 하는 방법
(next.js 13버전 app route 기준) 안녕하세요. 이번 프로젝트에서 next-auth를 사용하여 인증 구현을 진행 하고 있는데요. 일반적인 사용법들은 구현을 하였습니다. - 클라이언트에서 signIn, signOut, update 등 session 제어 - 서버사이드에서 getServerSession를 사용하여 session 정보 확인 하지만, 아래의 두 가지를 구현하는 것에 있어 어려움을 겪고 있습니다. 1. 서버사이드에서 사이트 첫 접속 시(새로고침 시) session이 없다면 세션 자동 생성 2. 서버사이드 전용 axios 유틸 파일에서 session의 토큰이 만료되었다면, refresh token(쿠키)으로 새로운 access token을 가져와서 기존 session에 업데이트 후 재요청 next-auth를 많이 사용하는 것 같고, 서버와 클라이언트에서 적절히 사용하실 것 같은데 아무리 찾아봐도 위에 대한 해결책은 없는 것 같습니다. 1번 사항과 같이 서버 사이드에서 session을 즉시 만드는 경우는 저희 프로젝트에 좀 특수한 경우인 것 같고, 2번의 경우는 일반적인 토큰 갱신 방식인 것 같은데 토큰 갱신은 서버사이드에서 어떻게 할 수 있을까요? 해결 방안이 있거나, 이러한 상황에서는 어쩔 수 없이 access token을 쿠키로만 관리해야 하는 것인지 의견 부탁 드립니다. 서버와 클라이언트에서 access token의 만료 갱신 처리를 위해 access token을 보통 어디에 관리하시나요? cookie만이 방법일까요?
개발자
#next.js
#next-auth
#server-component
답변 1
댓글 0
조회 1,507
일 년 전 · 김인후 님의 새로운 답변
session과 router 처리
안녕하세요. React를 이제 갓 배워 클론코딩에 활용하고 있습니다. 로그인 기능을 구현하고 있는데, React에 useContext 훅이나 Redux 와 같은 유용한 서드파티가 있지만 보통 세션 처리는 서버에서 하는 걸로 알고있습니다. 여기서 생기는 의문이 그럼 처음 서비스에서 세션 정보를 취득했을 때 그 정보를 클라이언트에서 상태 관리하여 사용하는 건지, 아니면 지속적으로 서버와 통신하여 가져오는건지 궁금합니다. 라우터 처리도 비슷한 질문인데요. 서버에도 리다이렉션이 있고, React에도 Router 라이브러리로 리다이렉션을 구현할 수 있는데 각각 어느 상황에서 쓰는건지 구분이 가지 않습니다. 초보적인 질문이라 좀 부끄럽네요.. 감사합니다!
개발자
#react
#express
답변 1
댓글 0
조회 47
2년 전 · 이양일 님의 답변 업데이트
aop, interceptor 중 세션처리
로그인이나 권한은 인터셉터, 로깅이나 에러처리는 aop에서 처리하는게 좋다고 배웠는데 현재 저희 회사는 aop단에서 세션처리를 하고있어 궁금증에 질문올려봅니다. AOP에서 세션처리가 효율적인지 그리고 인터셉터에서 처리하는것과 비교하여 유의미한 차이가 있는지 질문드립니다!
개발자
#kotlin
#spring-boot
#springboot
#aop
#interceptor
답변 1
댓글 0
조회 148
2년 전 · 이형래 님의 새로운 답변
임시저장 기능 구현
설문조사나 자기소개서 등에서 임시저장 또는 실시간 저장을 구현하고자 한다면 저장할때마다 트랜잭션을 발생시키시나요? 혹은 로컬스토리지나 세션에 저장후 한꺼번에 디비에 저장하는게 적절할까요? 설문조사 작성중에 나간후 다시 작성할때 데이터가 남아있고 작성도중 이전다음페이지로 왔다갔다해도 데이터들이 남아있기해야한다면요 저장할때마다 디비에하면 서버부하가 심하나요? 그걸 해결할방법이있나요?
개발자
#트랜잭션
#서버부하
#임시저장
답변 1
댓글 0
추천해요 1
조회 488
2년 전 · 손희준 님의 질문
Android 앱에서 JWT를 저장할 때 SharedPreferences
안녕하세요. Android와 Spring을 공부하고 있는 주니어 개발자입니다. 다름이 아니라 서버에서 REST API(를 가장한 HTTP API)로 회원 서비스를 제공하려고 하는데요, 세션이 아닌 JWT 방식으로 인증하려고 합니다. 클라이언트에서 아이디와 비밀번호를 POST로 서버에 보내면 응답으로 JWT를 발급하려고 하는데요. 클라이언트가 웹일 경우 쿠키에 담아서 저장하면 된다던데, 클라이언트가 앱일 경우는 SharedPreferences에 담아 저장해도 보안상에 문제가 없을까요? 또한, 이에 관해 검색을 하다보니 나오는 자료가 별로 없던데, 혹시 제가 하려는 방식처럼 앱에 로그인 서비스를 제공하기 위해 서버를 별도로 구현하여 REST API로 제공하는 방식 자체가 안 좋은 방식인가요?
개발자
#android
#server
#jwt
#authentication
답변 0
댓글 0
조회 109
2년 전 · 익명 님의 질문 업데이트
Jdbc 연결시 loadbalance 기준
안녕하세요 java로 1초마다 수행하는 배치프로그램을 만들어놨습니다. 연결시 jdbc:oracle:thin: address1, address2, laod_balance=on, fail_over=on 위와같이 설정하여 사용중입니다. 프로그램이 한번 수행 후 마지막 finally에서 connection close()를 하고있습니다. 그런데 db1번서버, 2번서버 중에서 항상 1번서버만 접속하게됩니다. 리소스를 모니터링하면 항상 1번서버의 cpu만 50~80%사용중이고 2번서버는 거의 놀고있습니다. 실제 커넥션도 1번으로만 몰리고 1번 cpu가 80%이상으로 사용중이고, 2번에 세션이 없는데도 계속 1번으로만 접속이 됩니다. Q1. jdbc thin으로 사용할 때 loadbalance 동작 원리가 궁금합니다. 관련하여 자세한 설명이 있는 문서가 있다면 어디서 볼 수 있을까요? Q2. 접속url에서 절반정도 나눠서 address1, address2 순서를 바꿔서 설정하면 도움이 될까요? 1~5번 프로그램 : (address=1번서버) (address=2번서버) 6~10번 프로그램 : (address=2번서버) (address=1번서버) Q3. DB가 오라클11g인데 오라클에서도 체크해야할 부분이 있을까요?
개발자
#jdbc
#thin
#loadbalance
#oracle
답변 0
댓글 0
조회 66
2년 전 · 강모민 님의 새로운 댓글
인증 서버와 어플리케이션 서버의 분리에 대해 궁금한 점이 있습니다
안녕하십니까 제가 현재 인증 서버와 리소스(어플리케이션) 서버는 왜 분리되어야하는가에 대한 의문을 조금 가졌는데요. 조금 찾아보니 분리의 이유가 1. 공격자가 리로스 서버에 대한 접근권한을 얻었을 때, 사용자의 민감한 정보를 얻을 수 없기 위해 분리를 한다. 2. 보안 서버에 대해 좀 더 강한 보안 강화를 할 수 있게끔 한다. 였던 것 같습니다. 궁금한 점은 1. 그러면 인증 서버와 리소스 서버는 디비를 분리해야하는것인가? 2. 서로 다른 서비스에 대해 같은 인증 서버를 공유해도 되는것인가? 3. 보안을 위해서 인증서버는 세션이나 토큰에 저장하는 값 중 어떤 것을 제한해야하는가? 4. 예를 들어 /my-info, /me 같은 자신의 정보 혹은 id를 가지고 오는 api는 그러면 인증서버에서 갖고 있어야하는가 리소스서버에서 갖고 있어야하는가? 에 대해 궁금한데 혹시 관련해서 제가 들어볼 수 있을까요?
개발자
#oauth
#authentication
#server
답변 1
댓글 2
추천해요 10
조회 1,421
2년 전 · - 님의 질문
flutter에서 웹뷰 띄우기 (세션 유지)
안녕하세요 현재 flutter로 앱 개발을 하고 있고, 일부 기능들을 웹뷰를 띄워서 개발하려고 하는데 사용자 인증, 세션 유지에 관해 질문이 있습니다. 우선 flutter에서 웹으로 access token을 보내서 웹에서도 api call을 할 수 있도록 개발해놓았는데, 세션 유지는 어떻게 하면 좋을 지 고민입니다. (next auth를 사용해서 ..?)
개발자
#flutter
#webview
#auth
#next-auth
#next.js
답변 0
댓글 0
조회 527
2년 전 · 전해명 님의 댓글 업데이트
다국어처리를 서버에서 json을 받아서 처리를 할려는데,
프론트는 vue입니다. 서버에서 jsonarry으로 언어를 creatApp하기전에 통째로 받아서 프론트에서 함수호출로 해당 언어를 가져옵니다. 그런데 클라이언트를 리프레시(f5)를 할때마다 export해둔 전역 언어모음집이 빈값이 됩니당^^.. 리프레시를 안해도 해당 브라우저세션이 유지되는 동안에는 데이터를 지켜주고싶은데 얕은지식으론 검색도 어떻게 해야할지 모르겠네요. I18은 사용안해용 조언 부탁 드립니다.ㅠ
개발자
#vue.js
#다국어
답변 1
댓글 1
조회 158
2년 전 · 커리어리 AI 봇 님의 새로운 답변
리액트 스크롤 위치 유지 방법이 궁금합니다.
최근에 리액트 시작한 신입 웹개발자입니다. 팀에 사수도 알려줄 수 있는 사람도 없어 한계에 도달해서 ••• 혼자 독학하며 끙끙 앓다가 물어봅니다 ㅠㅠ api로 댓글페이지에 댓글 리스트를 뿌리고 해당 댓글에는 고유넘버가 있습니다. 이 고유넘버를 추적해 답글페이지로 이동하는데 이 답글페이지에서 뒤로가기버튼을 클릭 해 이전 페이지에 도달할때 제가 클릭했던 댓글에 스크롤 위치가 유지되었으면 합니다!••• 단순하게 생각했을 때 그냥 세션/로컬스트로지에 위치저장하고 뒤로가기할 때 기억해놓은 위치로 이동하면 될 것 같은데 그게 저에겐 굉장히 어렵네요 ... 퍼블리셔로 입사해 프론트 업무를 주신게 너무 감사해 하루하루 성장해 가고싶은데 요즘 너무 못하는거같아 속상해요 선배님들 조언이 필요합니다 살려주십쇼 !!
개발자
#react
#javascript
#웹개발
#프론트
#리액트
답변 2
댓글 0
추천해요 1
조회 2,523