묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session 객체를 thymeleaf 에서 어떻게 꺼낼 수 있죠?
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... }위 컨트롤러 작성하는 부분입니다.관련된 html 파일은 basic-objects 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요.이게 가물가물한데 컨트롤러 메서드에서 파라미터로 호출하면 자동으로 모델에 넣어주기 때문에 thymeleaf 에서 ${session} 을 꺼낼 수 있는거죠?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
request.getSession 과 sessionStore
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 이해한 바로는request.getSesison 을 통해 얻는 HttpSession 은SessionManager 와 비교하면 createSession 동작이 아니라 sessionStore 와 같은 개념의 저장소를 호출하는 것 같고,HttpSession 의 setAttribute 동작이 createSession 의 sessionStore.put 과 같은것이며request.getSesison 를 통해 null 이 아닌 session 이 처음 만들어질 때, response 에 어떤 클라이언트의 sessionStore(HttpSession) 인지 구분하는 id 가 쿠키로 담기는 것 같은데이렇게 이해하는게 맞을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Send lock 관련 질문
public void Send(byte[] sendBuff) { lock (_lock) { _sendQueue.Enqueue(sendBuff); if (_pendingList.Count == 0) RegisterSend(); } } void OnSendCompleted(object sender, SocketAsyncEventArgs args) { lock (_lock) { if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success) { try { _sendArgs.BufferList = null; _pendingList.Clear(); // Doing if (_sendQueue.Count > 0) RegisterSend(); } catch (Exception e) { Console.WriteLine($"OnSendCompleted Failed {e}"); } } } }수업을 들으면서 Send와 OnSendCompleted에 lock이 서로 다른 두개이상의 쓰레드가 동시에 sendQueue, pendingList에 Write하는 것을 방지하는 것이라고 이해했습니다.그리고 Send의 if문이 다른 쓰레드가 전송중일때를 체크하는 것이라고 들었는데 저 2개의 lock구조에서, 쓰레드A가 OnSendCompleted의 lock구역안에 있을 때 쓰레드B가 Send의 lock구역에 진입이 가능한지 궁금합니다.만약 접근이 안된다면 pendingList.Count가 항상 0이 되지않을까 생각하고 있습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Session 사용 시 RESTful api users/{userid}에서 userid 가져오기에서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]spring에서 지원하는 서블렛 세션을 사용하면 클라이언트에 JSESSIONID가 쿠키로 전달된다고 알고 있습니다.질문 1. RESTful API 설계 시 유저의 마이페이지 관련 정보를 가져오는 백엔드 api path는 '/users/{userid}'가 올바른가요, '/profile'이 올바른가요? 혹은 각기 다른 api path를 통해 뷰에 해당하는 프론트엔드에서 조립해야 하나요? 질문 2. 위의 질문 대답이 전자라면, 클라이언트가 마이페이지 버튼을 눌렀을 때 클라이언트에게 userid가 없고 JSESSIONID만 있는 상태인데, userid를 가져오는 과정을 거친 후에 '/users/{userid}'를 실행해야 하나요? 혹은 로그인 시 userid를 쿠키 등으로 클라이언트에게 전달하여 클라이언트가 갖고 있도록 해야 하나요? 실무에서는 어떤 방식을 사용하는지 궁금합니다. 질문 3. 같은 맥락으로 회원탈퇴 기능의 api를 '/users/{userid}'라고 할 때, JSESSIONID만 가지고 있는 클라이언트가 해당 api를 사용하기 위해서는 userid를 가져오는 작업을 수행해야 하나요, 아니면 다른 방법이나 접근방식이 있을까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
쿠키 & 세션을 REST API로 개발할 때
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]쿠키에 대해서 알게 되었지만 궁금한점이 있습니다.구글에 검색하다 본 기억이 있는데 쿠키 & 세션을 REST 개발환경에서는 못쓴다고 본적이 있는거 같은데 스프링 부트로 rest형식으로 개발할 때는 쿠키 & 세션을 못쓰는게 맞나요? 만약, 못쓰는게 맞다면 그러면 로그인 유지나 광고 3일 동안 안보겠습니다 같은 쿠키를 사용해야 할 때는 어떤식으로 시켜줘야나요? 리액트와 협업하면 프론트에게 맡겨야 하나요?
-
해결됨PHP 7+ 프로그래밍: 객체지향
Session을 생성할 때 sessions 테이블 id 컬럼의 값이 어떻게 결정되는지 궁금합니다.
안녕하세요, Sessions 강의를 듣고 궁궁한 것이 생겨 질문드립니다. 강의 내용에서는 SessionHandlerInterface의 구현체 클래스를 선언하여 사용하는 것으로 보이는데요. index.php의 예제 코드 실행시 처음 생성되는 SESSION 데이터가 있으면 sessions 테이블에 세션 정보가 INSERT 되는 것으로 확인이 되었습니다. 하지만 sessions 테이블의 id 컬럼의 값이 자동으로 들어가지는 것을 확인할 수 있었는데요. 이 id은 PHPSESSID에서 가져오는 것 같은데, 그 과정에 대해 알 수 있을까요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
express aws 배포 후 세션 - 쿠키
선생님, 안녕하세요. 사실 이 질문이 여기에 해도 되는 질문인지 잘 모르겠지만 답변해주시면 감사하겠습니다. nest.js를 학습하기에 앞서 express 를 복습하고자 전에 개인적으로 만들었던 거를 한번 복습 후, 이번에 aws ec2에 배포까지 해보게 되었습니다. 로그인을 session으로 구현하였는데, 로컬에서는 클라이언트에 쿠키가 잘 전달 되었지만, ec2에 올리고 난 후 클라이언트에 쿠키가 전달되지 않아 도움을 청하고자 합니다. 우선 서버쪽 CORS 설정과 세션 설정은 이렇게 해주었습니다. app.use( cors({ origin: [ 'https://jh-client.ga' // 배포한 client url ], preflightContinue: true, credentials: true, }) ); app.use( session({ secret: 'jjj', proxy: true, store: new RedisStore({ client: redisClient, ttl: 3600 * 24 * 3, //3600초 = 1시간 // ttl: 10, }), saveUninitialized: true, resave: false, name: 'MySessionKey', cookie: { sameSite: 'none', secure: true, // httpOnly : true, // maxAge: 1000 * 60 * 60, // 1000밀리세컨드 : 1초 maxAge: 1000 * 60 * 60 * 5, }, }) ); 클라이언트와 server 모두 ACM을 통해 https 설정을 해주었고, 클라이언트에는 cloud front, 서버에는 elastic load balancer 도 적용해주었습니다. stack over flow나 다른 곳들을 찾아본 결과, sameSite = 'none', secure = true 설정을 해주면 대부분 된다고 하던데 (물론 클라이언트에서 axios 요청을 보낼때도 withCredentials : true 설정을 해주었습니다.) 저는 이것 외에도 추천하는 다양한 방법들을 시도해보았지만 잘 해결되지 않아 너무 답답한 마음에 질문 드렸습니다. 꼭 답변해주시면 감사하겠습니다 감사합니다~~
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
getServersideProps session 질문
안녕하세요! 강좌를 바탕으로 블로그를 제작하는 중에, 방문자 수를 counting 하는 기능을 구현하는데 막혀 질문드립니다. front server에서 getServerSideProps에 있는 export const getServerSideProps = wrapper.getServerSideProps(async (context) => { const cookie = context.req ? context.req.headers.cookie : ''; axios.defaults.headers.Cookie = ''; if (context.req && cookie) { axios.defaults.headers.Cookie = cookie; } context.store.dispatch({ type: LOAD_MY_INFO_REQUEST, }) context.store.dispatch({ type: LOAD_POSTS_REQUEST, }); context.store.dispatch(END); await context.store.sagaTask.toPromise(); }); LOAD_MY_INFO_REQUEST와 LOAD_POSTS_REQUEST를 이용해 back server에 요청을 날리면 back server에서는 app.js의 최상단에 존재하는 let count = 0; app.use((req,res,next) => { var date = new Date(); var today=date.getYear()+" "+date.getMonth()+" "+date.getDate(); console.log("lastvisit : " + req.session.lastVisit); if(req.session.lastVisit != today){ req.session.lastVisit = today; count++; } next(); }); 다음 함수를 이용해 방문자 수를 count할려고합니다! 문제는 front에서 먼저, LOAD_MY_INFO_REQUEST로 요청을 보내, session과 함께 응답을 받고 다시 LOAD_POSTS_REQUEST요청을 하면, 요청에는 첫번째 요청의 응답으로 넣어주었던 session이 존재하지 않는다는 점입니다. 몇일동안 잡고 있어도 도저히 해결책을 모르겠어 질문드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Listener에서 새로운 Session을 생성할때마다 각자 다른 Socket이 할당되는 원리
클라이언트가 접속했을때 Listener에서 session.Start(args.AcceptSocket); 을 통해 Session에 Socket을 주입하는데, new 하는곳이 없는데 어떻게 Socket을 자동으로 생성해서 AcceptSocket에 할당해서 뿌려주는지 알고싶습니다. Listen 함수가 호출된 소켓만이 AcceptAsync에서 응답이 왔을때 초기화 해주는 것일까요? 그리고 args.AcceptSocket = null; 로 밀어주는 이유가 있을까요? 다른건 다 초기화 되는데 이것만 초기화되지 않는 이유가 따로 있을까요?
-
미해결스프링 시큐리티
ConcurrentSessionFilter와 SessionManagerFilter차이점이 무엇인가요?
둘다 동일한 계정으로 2명이상이 접근했을때 작동이 된다는것으로 알고있는데 헷갈려서 질문 드립니다. 둘다 세션을 체크하는것은 알겠는데 내부적으로 세션을 만들어서 저장을 하는건 SessionManagerFilter이고 ConcurrentSessionsFilter는 세션을 만료시켜서 Session을 비워주는 역할인건가요?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
jwt 와 session
1. 제가 지금 까지 강의를 듣고 이해한 것 으로는 세션은 서버 에서 session(메모리) 형태로 로그인 정보를 저장해두고 쿠키 (브라우저에서) session ID 를 저장해 놓으면 새로고침 할 때 마다 session ID 로 session 을 조회하여 로그인 시켜주는 것 으로 알고 있는데 정확히 이것이 맞나요?? 잘 이해가 안되서 요.. ㅠㅠ 강의 도중 JWT 가 알맞는 프로젝트가 있고 session 이 알맞는 프로젝트가 있다고 하셨는데.. 제가 (초급자 입장에서) 봤을 때 는 JWT 가 무조건 이득일 것 같습니다.. session 은 redis(추 가비용 발생!) 도 있고 또 load balancer 서버도 있어야 하는 것으로 알고있는데..(자세히는 모르지만 주워들었습니다..) 코 딩도 비교적 양이 많을 것 같아요. 2. JWT가 알맞는 프로젝트와 Session 이 알맞는 프로젝트를 예시로 들어주실 수 있으신가요..? 3. JWT 가 네트워크 용량이 늘어 난 다는 것 외에 단점이 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Player의 MoveDir, PosInfo 관련 문의 (C_MoveHandler)
안녕하세요?좋은 강의 제공 주셔셔 감사합니다. 코드를 따라 가면서 궁금한 사항이 있어 글 남기게 되었습니다. 서버와 클라가 서로 연결 될 때 ClientSession.cs의 MyPlayer의 정보가 MyPlayer.Info.PosInfo.State = CreatureState.Idle; MyPlayer.Info.PosInfo.MoveDir = MoveDir.None; 으로 정의 되는걸로 보입니다. (코드 하단) public override void OnConnected(EndPoint endPoint) { Console.WriteLine($"OnConnected : {endPoint}"); MyPlayer = PlayerManager.Instance.Add(); { MyPlayer.Info.Name = $"Player_{MyPlayer.Info.PlayerId}"; MyPlayer.Info.PosInfo.State = CreatureState.Idle; MyPlayer.Info.PosInfo.MoveDir = MoveDir.None; MyPlayer.Info.PosInfo.PosX = 0; MyPlayer.Info.PosInfo.PosY = 0; MyPlayer.Session = this; } RoomManager.Instance.Find(1).EnterGame(MyPlayer); }궁금한 사항은 하기 부분 입니다. 연결 된 이후에 MyPlayer가 어디서 변경 되기에 public static void C_MoveHandler(PacketSession session, IMessage packet) 에서 session 정보를 받아다가 쓸 수 있는지 알 수 있을까요 ?? ㅜㅜ 특히 C_MoveHandler 코드 중에서 PlayerInfo info = clientSession.MyPlayer.Info; 부분이 이해가 안되는데, 현재 MyPlayer가 정보 중 Move Dir 은 None으로 계속 유지되고 있는게 아닌가요 ? 어디서 MyPlayer정보가 업데이트 되는지 알 수 있을까요 ? ㅜ //일단 서버에서 좌표 이동 PlayerInfo info = clientSession.MyPlayer.Info; info.PosInfo = movePacket.PosInfo; //다른 플레이어한테도 알려준다. S_Move resMovePacket = new S_Move(); resMovePacket.PlayerId = clientSession.MyPlayer.Info.PlayerId; resMovePacket.PosInfo = movePacket.PosInfo; clientSession.MyPlayer.Room.Broadcast(resMovePacket);
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
MultiProcession에서의 프로세스별 session 초기화값
24:17 부근에서 실습을 진행한 multiprocessing 코드를 실행하였더니 강의와는 달리 4개의 세션값이 모두 동일하게 나옵니다. 프로세스별로 다른 세션값이 나와야한다고 생각했는데 동일한 값이 나와서 질문드립니다! 이거 상관없는것인지요!?