현 시점에서 nest공식문서 가보면 어센틱케이션에 passport는 없어지고 그냥 @nestjs/jwt만 있는것으로 바뀌어있고 passport는 recipes카테고리로 이동되어있고 install 도 $ npm install --save @nestjs/passport passport passport-local $ npm install --save-dev @types/passport-local 이렇게 나와있는것으로 보이는데 그냥 위 passport따라가면되나요?
폴더 복사 붙여넣기 후 이름 변경시 아래와 같은 에러가 뜬다면 뭘 점검해 봐야 하나요? 복사 붙이기로 새로 생성된 폴더 안의, 파일을 열거나 하지 않았는데, 복사 완료 후 폴더명 변경시 왜 오류가 나는 걸까요? 답변 주시면 감사하겠습니다. Error: '03-04-rest-api-with-express-board-'을 (를) 'section03'(Error: EBUSY: resource busy or locked, rename 'c:\study\node_codecamp\class\section03\03-04-rest-api-with-express-board-' -> 'c:\study\node_codecamp\class\section03\03-04-rest-api-with-express-swagger')(으)로 이동할 수 없습니다.
안녕하세요! 해당 수업에서 CORS 에러가 발생한 이유를 다른 작성자 분께서 질문해주셨는데, 강사님께서 프론트엔드와 백엔드의 포트가 달라서 그렇다고 대답해주셨습니다. 백엔드에서는 app.listen을 통해 포트를 설정을 해주었지만, 프론트엔드에서는 포트를 설정한 적이 없는데 포트번호를 어떻게 알 수 있나요..? 설정하는 방법이 따로 있는건가요? 그리고 이전수업에서 한 컴퓨터에서는 프론트엔드와 백엔드의 포트번호가 달라야한다고 말씀하셨는데, 그렇다면 하나의 컴퓨터에서는 same origin이 될 수 없는건가요?
안녕하세요 강사님! 강의 재미있게 보면서 공부하고 있습니다. PostLikeAPIView에 대한 overriding 관련 문의드립니다. class PostLikeAPIView(UpdateAPIView): queryset = Post.objects.all() serializer_class = PostLikeSerializer # PATCH method def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() # data = instance.like + 1 data = {'like': instance.like + 1} serializer = self.get_serializer(instance, data=data, partial=partial) serializer.is_valid(raise_exception=True) self.perform_update(serializer) if getattr(instance, '_prefetched_objects_cache', None): # If 'prefetch_related' has been applied to a queryset, we need to # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} # return Response(serializer.data) return Response(data['like']) 강의 내용 중에 위 괕이 오버라이딩 하는 로직이 있었는데요. # views.py class PostLikeAPIView(UpdateAPIView): queryset = Post.objects.all() serializer_class = PostLikeSerializer def patch(self, request, *args, **kwargs): instance = self.get_object() request.data['like'] = instance.like + 1 super().patch(request, *args, **kwargs) return Response(request.data['like']) # serializers.py class PostLikeSerializer(serializers.ModelSerializer): class Meta: model = Post fields = ['like'] 이런 식으로 해도 같은 결과를 얻을 수 있을 수 있었습니다. 이렇게한 의도는 update method를 overriding 하는 거보다 patch method를 overriding 할 때 비즈니스 로직 코드가 더 짧으니 실수가 적지 않을까 해서 입니다. 제가 적은대로 사용하는 것도 유효한지, 어떤 단점이 있을지 잘 생각이 안나서 문의드립니다. 강의 감사하게 보고있습니다. 항상 건강하시길 바라겠습니다^^
안녕하세요. 강의 잘 듣고 있습니다. user - service - google가 있다고 했을 때, user가 oauth code grant방식으로 login을 하면 service가 callback을 통해 code를 받게되고, 그 정보와 다른 정보를 조합하여 google로 부터 access token과 refresh token을 받아올텐데요. 여기서 token을 어떤식으로 처리하는지 궁금합니다. service가 google로 부터 받은 token들을 app으로 전달하는 건가요? 그렇다면 app은 token이 만료되면 google에 직접 토큰을 다시 요청하는걸까요? 아니면 service를 통해 relay를 해서 토큰을 다시 요청할까요? service는 token이 올바른건지는 검증할 수 없으니 db에 저장을 해 두고 나중에 같은 토큰을 user로부터 받았을때 같은지 비교해서 허용할 지 말지 알 수 있을거 같은데 이렇게 하는건가요? 아니면 service가 직접 새로운 토큰들을 생성해서 관리하는게 좋을까요? 그리고 public app에서 보안을 더 강화하기 위해 pkce방식도 쓰는거 같던데 실제 많이 쓰시는지 궁금하네요. 답변 부탁드립니다. 감사합니다.
비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
certbot을 통해 https를 적용한 뒤에 front 파일에 변경, 추가할 파일이 있어서 git pull origin main으로 시도해 봤지만 타임 아웃 에러가 걸리고 혹시 clone으로 하면 될까 해서 해봤지만 역시 타임아웃 에러가 걸렸습니다. 방법을 찾아보려고 열심히 구글링 2일간 해봤지만 도무지 개선이되질 않아서 ㅠㅠ 혹시 문제원인이나 해결방안 귀뜸해 주시면 감사하겠습니다.
mongodump로 로컬에 설치된 몽고 db를 백업하려 하는데 아래의 오류가 나옵니다.해결방법을 부탁합니다. - (mongodump.exe)를 별도로 다운받아야 하나요? -최신버전에는 mongodump.exe파일이 설치되어 있지 않습니다. [오류메세지] 'mongodump'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다
처음 화면에서 http://127.0.0.1:3012 을 호출하면 http://127.0.0.1:3012/articles/all 주소로 자동 이동합니다. 궁금한 점은 articles/all 화면에서 제일 상단에 인증되면 보이는 입력칸이 보입니다. {#if $isLogin} 으로 조건이 되어도 true 인지 입력칸이 보입니다. 로그아웃 버튼을 누르면 로그인을 하지 않은 첫화면인데 작동이 되어 로그아웃으로 해제 됩니다. 이 부분이 궁금합니다. <script> import ArticleHeader from '../components/ArticleHeader.svelte'; import ArticleList from '../components/ArticleList.svelte' import ArticleAddForm from '../components/ArticleAddForm.svelte' import Comments from '../pages/Comments.svelte' import { isLogin } from '../stores' import { Route } from 'tinro' </script> <ArticleHeader /> <main class="slog-main "> {#if $isLogin} <ArticleAddForm /> {/if} <ArticleList /> <Route path="/comments/:id" > <Comments /> </Route> </main> function setIsLogin() { const checkLogin = derived(auth, $auth => $auth.Authorization ? true : false) return checkLogin }