저는 개발자는 아니지만 회사 내부 검토 목적으로 문의드립니다. 현재 저희 회사에서 , 소셜 로그인(구글, 카카오, 네이버, 애플) API 신청 시 어떤 서류가 필요한지 파악이 필요한 상황입니다. 구체적으로 아래 내용이 궁금합니다: 1. 소셜 로그인 API 사용 신청 시 제출해야 하는 서류가 어떤 것들이 있나요? 2. 사업자등록증 등 법인 관련 서류가 반드시 필요한가요? 3. 개인 개발자와 법인(회사) 기준으로 신청 절차나 필요 서류가 다른가요? 비개발자 입장에서 드리는 질문이라 다소 기초적일 수 있지만, 내부 검토에 필요한 내용이라 문의하게 되었습니다. AI를 통해 답변을 받았으나 참고용으로만 생각하고, 정확한 내용을 확인하고자 문의드립니다. - AI 답변 : 각 플랫폼별로 회원가입 진행 후, 별도 서류 없이 API 발급 가능
로그아웃 시, 토큰 만료 처리 로그아웃 할 때, 토큰 무효화를 확실히 하기 위해 oauth2_authorization 테이블에 있는 액세스 토큰과 리프레시 토큰을 만료 시키고 싶은데 맞는 방법인지 모르겠습니다. 로그아웃url 뒤에 쿼리로 액세스 토큰, 리프레시 토큰 받아와 커스텀한 logoutHandler에서 OAuth2AuthorizationService 호출하여 토큰 유효기간을 업데이트 하여 무효화하긴 했는데 위 방법처럼 DB의 oauth2_authorization 테이블을 직접 업데이트쳐서 토큰을 무효화 해도 되는것인지, Spring boot 내에서 왜 로그아웃할 때 토큰 유효기간을 만료시키지 않는 것인지 궁금합니다. 로그인 시, 세션 인증 정보 저장 그리고 로그인할 때 OAuth2AuthorizationServerConfigurer 내부에서 세션에 인증 정보(유저명, 인증여부 등)담고 있는데 인증서버를 여러 대 구성할 경우, 문제가 없을지? redis를 사용해야할지 궁금 합니다. oauth2는 토큰발급하여 인가하는데 왜 세션에 인증정보를 저장하여 사용하나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 스프링 MVC 2편 - 섹션6. 로그인 처리1 중 로그인 기능 강의를 수강하다가 구현 방법에 대해 궁금한 점이 생겨 질문 드립니다. 강의 3:49초 부분에서 로그인 핵심 비즈니스 로직을 2단계의 과정으로 나누고 이를 코드로 작성하는 것을 학습했습니다. 입력 받은 loginId와 일치하는 회원 정보가 있는 지 DB에서 조회한다 loginId로 DB에서 조회한 회원 정보의 password와 입력 받은 password를 비교하여, 일치하는 회원 정보를 찾는다 public Member login(String loginId, String password) { return memberRepository.findByLoginId(loginId) .filter(m -> m.getPassword().equals(password)) .orElse(null); } 강의의 로직은 잘 이해하였지만, 일종의 원 쿼리 라고 부르는 방식으로, 한 번에 해결할 수 있을텐데 , 왜 2단계로 나누어 해결하는 지 이유 가 궁금합니다. 강의에서는 메모리를 DB로 사용했지만 일반적인 DB를 사용한다고 가정했을 때, 제가 생각한 방법 은 MemberRepository에 public Optional findByLoginIdAndPassword(String loginId, String password) 메서드를 정의하고 loginId와 password가 모두 일치하는 (AND 조건) 회원 정보가 있으면, 그 회원 정보(Member)를 반환 일치하는 회원 정보가 없으면 null 반환 LoginService에서 리포지토리의 findByLoginIdAndPassword 를 호출하기만 하면 되지않을까 생각했습니다. public Member login(String loginId, String password){ return memberRepository.findByLoginIdAndPassword(loginId, password); } 이렇게 생각한 이유 는 입력한 정보와 일치하는 데이터가 DB에 있는 지 확인하기 위해 어차피 DB에 접근이 필요한 상황이고, 그렇다면 자바에서 루프를 돌면서 비교하는 것보다 DB에서 WHERE 절을 통해 조건을 비교하는 것이 빠르지 않을까 싶어서 입니다. 정답이 있는 건 아니겠지만, 영한님께서 로직을 2단계로 나누어 작성하신 데에는 이유가 있을 것이라 생각해서, 그 이유가 궁금합니다. 저는 SI에서 근무를 했었는데, 비즈니스 로직을 모두 쿼리에 녹여내고, 대부분을 원 쿼리로 해결하는 방식의 개발 방법을 익혔었습니다. 영한님 강의를 들으면서 이게 좋지 않은 방법이란 것을 알게 되었고, 보다 객체지향적으로 설계하고 개발할 수 있도록 노력하고 있습니다. 그래서 로그인 로직에서도 원 쿼리보다는, 강의에서와 같이 2단계로 작성하는 것이 더 좋은 방법인 건지 궁금합니다. 긴 질문 읽어주셔서 감사합니다. ^^
결론: 와이파이 가 바뀌면 ip 주소 바뀌니까 mongoDB 에 network access 에 create Ip 해서 새 ip 등록해줬습니다. 공용와이파이 일 경우 2시간마다 ip 주소가 바뀌니 편집으로 바꿔보세요 ip4 주소 찾는법 구글링해도 나오고 window 는 cmd(관리자권한 실행) - ipconfig 입력 상황: 콘솔창에는 504 게이트 웨이 오류가 터미널에는 HRM 로컬호스트 3000 로컬호스트 5000 뭐시기랑 app chashed 도 동시에 떳었습니다. HRM 앞줄에는 Error: Cannot find module '../models/Product' 이거는 models 에 product 파일 생성하니 사라짐 파일을 아직 만들지는 않았지만 auth.js 파일에서 위 파일을 호출하니 강사님 깃헙 완성코드 에서 ../models/product.js 파일 복붙해주니 해결되었으나 또 다음으로 HRM throw er 이런식으로 떠서 HRM 다시뜸 504 gateawqy 발생 npm run dev 는 client 폴더가 아닌 (server 폴더 안에서도 아님!) root 폴더에서 실행하기 혹시 클론을 해서 실행시킨다면, root folder > npm install client folder > npm install install을 먼저 하는 것 잊지 않기 위 강의처럼 다른 옵션들 ... dropzone 같은 모듈을 사용했다면 해당 모듈에 대한 install들도 한 번씩 더 해보기 npm install bcrypt --save 다시 시도하기 4-1. bcrypt 버전을 5.0.0 으로 dependencies에서 수정 -> npm install -> npm run 컴퓨터 껐다 키기 위에 해결방법 다해도 몽고디비 연결이 안되는 거같아 몽고디비에서 새마음으로 처음부터 클러스터, 몽고 uri 사용자 이름, 비밀번호 새로하고 ip 주소 추가해주니 모든 에러 사라졌습니다. 저도 매 초마다 떨리는 순간으로 코드 작성하고 run 하고 있습니다. 여러분 모두에게 행운을 빕니다. ^^ *
트위터 로그인을 구현하고 싶습니다. 트위터 연동 로그인에 대해서 많이 찾고 있는데 제 능력 부족인지 많은 정보가 나오지 않아서요... 카카오 같은 경우 데이터를 요청하는 방법이 간편해서 진행이 됐는데. 트위터 같은 경우 데이터를 못받아오고 있어서요 ㅠㅠ... 질문을 어떻게 올려야할지 모르겠네요... 참고할만한 정보나 구현해보신 분 계실까요 ?
안녕하세요 영한님! 질문드립니다..! 아래와 같이 로그인 시 세션에 로그인 회원정보를 보관하고 //로그인 성공 처리 TODO //세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 HttpSession session = request.getSession(true); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 아래와 같이 세션에서 SessionConst.LOGIN_MEMBER가 key 값으로 session 에서 SessionConst.LOGIN_MEMBER와 매칭되는 value인 Member 객체를 꺼내오는 것으로 이해하고 있는데,, Member loginMember = (Member) session.getAttribute(SessionConst.LOGIN_MEMBER); 위와 같은 로직으로 여러회원이 로그인 할 텐데... 어떻게 하나의 key 값으로 여러개의 Member 객체를 구별 할 수 있는지 궁금합니다...! 감사합니다.!
안녕하세요 제로초님 강의 항상 잘 보고있습니다. passport 의 authenticate 매서드를 사용한 후에 23번 라인에 (req, res, next) 를 써주는 이유와 의미가 궁굼합니다 어떤 문법이고 어떤개념인지 전혀 몰라서 검색해볼수도 없는 상황이라 질문 남깁니다. 답변주시면 감사하겠습니다!
안녕하세요. 요즘 열심히 듣고 실습하고 있는데 이 에러때문에 몇시간은 찾아봐도 해결이 안되서 결국 질문 남기네요.. swr버전 업데이트 관련 공지와 다른분의 쿠키관련 질문을 봤지만 해결이 안됩니다.. 도대체 이유를 모르겠습니다. 코드한번만 봐주시면 감사하겠습니다..! 참고로 위에 코드에서 .then(() => { mutate(); }) 이렇게 해도 에러는 똑같이 납니다 로그인 시도했을 때 나오는 에러(Network 탭) (쿠키가 없어요) 회원가입성공은 하는데 회원가입 Network탭에서도 쿠키는 전혀 안보이는데 회원가입했을때 네트워크탭에서도 쿠키가 보여야 하나요? 보여야하는거면 로그인이 아니라 회원가입에서부터 잘못된것인지.. 근데 회원가입 성공할땐 별다른 에러는 없었거든요ㅠㅠ
한가지 더 해결못한 이슈가 있습니다. 새로고침 후 / 직전에 구동 잘 되는 걸 확인했던 author 정보의 displayName을 읽어올수없다는 TypeError가 뜨네요, 그리고 로그인 후 리덕스에서 읽어오는 과정에서 뭔가 문제가 있는지 자꾸 react_devtools_backend.js:3973 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. at Login (http://localhost:3000/static/js/bundle.js:924:76) 이 오류가 뜨네요, 무시해도 되는 것인지 아니면 이번 문제와 연관이 있는지 모르겠습니다. 헷갈리는건 리덕스를 포스트 리스트 페이지에 연동하기 전까지는 무리 없이 잘 됐다가 갑자기 페이지를 새로고침 하니까 로그인 관련 이슈가 생겼다는 점입니다. !! 제가 서버를 구동시킨 상태에서 디테일 컴포넌트에 추가했던 author 정보의 displayName 받아오는 코드를 다시 지웠더니 문제가 사라졌다가 지웠던 코드를 똑같이 다시 쓰니 디테일 페이지가 문제 없이 작성자 정보를 보여주었습니다. < h3 > writer: { postInfo . author . displayName } </ h3 > 그런데 새로고침을 누르자 마자 위의 타입에러가 뜨면서 디테일페이지가 로딩이 1초간 됐다가 흰 화면이 되며 콘솔창에 아래 오류가 뜨는 것입니다. 콘솔창에 문제를 추적하기 위해 제가 아래 디테일 코드에 콘솔로그를 몇군데에 찍어봤는데 로그인 문제와 연관이있는지 서버와 연결은 되지만 위 첨부 콘솔창과 같이 빈 데이터가 넘어오는것 같습니다. 혹시나 해서 다시 "/" 으로 돌아가 로그아웃을 강제로 하고 재로그인을 해서 리스트가 있는 페이지로 들어와봤습니다. 그랬더니 author 정보는 잘 받아오는데 다음과 같은 콘솔창 오류가 추가되었습니다. 일단 저 오류를 무시하고 리스트에 있는 목록을 하나 클릭해 들어가니 역시나 빈 배열이 받아지는 오류가 반복됩니다. 분명 새로고침과 관련한 문제인 것 같은데.... 이상한건 새로고침을 하면 자동 로그아웃이 되어버리는건가 하고 의심해서 "/" 으로 돌아와보면 토큰이 넘어와 로그인 상태가 유지중이었습니다. 그래도 의심되는건 바로 로그인상태가 표시되는게 아니라 조금 뜸들이다가 로그인이 되었음이 표시되긴 합니다. 판다선생님이라면 어떤 부분을 살펴보실 것 같은가요 어떤 부분을 살펴보면 좋을지 알려주시면 확인 후 조치해보고 코드를 첨부해보겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예/ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 들은 학생입니다. 이번에 스프링 인터셉터 - 인증 체크를 듣고 개발을 해보았는데요. 김영한 강사님께서 만드신 로그인 세션 기능은 유저 한명일 때 잘 작동하는 것은 알 수 있는데, 궁금한 점은 유저가 여러명일 때는 작동이 잘되는가 라는 점입니다. 세션은 서버의 메모리상에서 공유되는데 if( session == null || session.getAttrivute(SessionConst.LOGIN_MEMBER) == null ) .... 위와 같은 코드 부분에서 session이 있다고 하더라도 만약 다른 유저가 이미 로그인 되어 있다면(로그인을 했다면), session과 세션의 SessionConst.LOGIN_MEMBER 키에 대한 값은 이미 존재합니다. 따라서 저는 이번에 예시로 작성해주신 로그인 세션 유지 기능이 유저 한명이 일 때만 작동한다고 생각합니다. 아직 제가 많이 부족하고 많이 모자랍니다. 나쁜 의도로 질문한 것이 아니라 너무 궁금하고 아무리 찾아봐도 모두 강사님처럼 코딩을 하셔서 질문남겨봅니다. 항사 강사님께서 쉽고 친절하게 설명해주신 덕분에 쉽게쉽게 스프링을 이해하고 잘 배워갑니다. 감사합니다.
선생님, 안녕하세요 :) 로그인 폼과 회원가입 폼의 버튼의 label 변경이 되지 않습니다. 분명 제가 오타를 낸 것 같은데, 아무리 선생님의 예제랑 비교해도 다른 부분을 찾을 수가 없어서 사소한 내용이지만 질문 드립니다. 귀찮게 해드리는 것 같아 죄송해요ㅠㅠㅠㅠㅠㅠ 1. _form.html {% load bootstrap4 %} < form action ="" method ="post" enctype ="multipart/form-data" > {% csrf_token %} {% bootstrap_form form %} {% buttons %} < button type ="submit" class ="btn btn-primary" > {{ submit_label | default : "Submit" }} </ button > {% endbuttons %} </ form > 2. login_form.html {% extends "accounts/layout.html" %} {% block content %} < div class ="container" > < div class ="row" > < div class ="col-sm-6 offset-sm-3" > {% include "_form.html" with submit_lable = "로그인" %} </ div > </ div > </ div > {% endblock content %} 3. 로그인 페이지 화면