묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
[GoRouter & Authentication 마무리하기] 401 에러
토큰 만료 이후 GoRouter & Authentication 따라할 경우 401 에러를 저도 만났어요. 유사 질문들과 답변이 있어, 저도 경험기 공유합니다.증상GoRouter 적용 후 재실행시 Splash 화면에서 무한 로딩http://127.0.0.1:3000/user/me/ 호출에서 401 로그 확인원인refreshToken 이 있거나 accessToken이 있는 경우에 토큰이 만료된 상태이면 증상 발생 의심해결user_me_provider.dart 파일 > getMe() 에서try catch & state 초기화 추가재실행Future<void> getMe() async { // ... 중략 try { final resp = await repository.getMe(); state = resp; } catch(e, stack) { print(e); print(stack); state = null; } }저와 동일한 오류를 만나는 분에게 소소한 도움이 되길 바래요 :)
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
401에러 logout() 문제 auth_provider.dart에 logout() 함수 작성시 notifierListener() 추가시 해결했습니다.
GoRouter 프로젝트에 적용하기 / RefreshToken 만료되면 로그아웃 영상 4분42초 부분에서 void logout() { ref.read(userMeProvider.notifier).logout(); notifierListener(); // 이부분 삭제하셨음. }수업에서 notifierListener()를 삭제하셨지만,제 경우에는 삭제하면 오히려 401 에러로 인해 splashScreen을 빠져나가지 못하고 App이 멈춰버리는 문제가 생깁니다.오히려 그대로 놔두는 것이 잘 작동합니다.버전 문제인지 뭔지는 모르지만 다른 분들에게 도움 되었으면 해서글로 남겨봅니다.혹시 삭제한 이유가 따로 있는 건지 궁금하기도 합니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
[에러] GoRouter 적용하는 단계에서 401 에러가 뜹니다.
GoRouter 프로젝트에 적용하기 / Authentication 마무리하기 강의 단계에서서버에서 401 Unauthorized 에러가 발생합니다.디버그 내용을보면 잘못된 토큰이라고 나와서토큰 변환 코드가 잘못됐나 확인했지만 문제가 없었습니다.에러 발생 후 바로 이동한 파일이 user_me_repository.g.dart 파일이고아래 두 번째 사진에서 코드에서 에러 메세지가 발생했습니다.아이폰 시뮬레이터에선 splash_screen에서 멈추고로그인 화면으론 넘어가지 않았습니다.어떻게 해야 이 에러를 해결 할 수 있나요?<작업 컴퓨터><1번째 사진><2번째 사진><3번째 사진><서버 컴퓨터>
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
SSR axios를 하는 과정에서 401 에러가 떠요..
getServerSideProps를 이용해서 SSR을 할 때axios에서 계속 401 Unauthorized 에러가 발생하네요...혹시몰라서 CSR로도 시도해봤는데 이때는 잘 되구요...혹시 SSR에서 header 설정을 추가로 해주어야한다거나 하는 경우가 있는건가요...? 어떻게 시도를 해도 에러가 없어지지 않네요ㅠㅠㅠ
-
미해결배달앱 클론코딩 [with React Native]
401 에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 . Permissions를 수동으로 할 수 가 없는데 이런 경우는 어떻게 해결해야 하나요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
axios Unauthorized 에러 관련 질문 드립니다.
강사님~ 안녕하세요~~!! 강의 수강 중 - Suggestion 목록 API 및 화면 구현 - useAxios 훅을 통한 보다 손쉬운 조회 API 요청 해당 강의의 실습 중 에러가 생겨서 질문을 드립니다. 먼저, 아래는 SuggestionList.js 의 코드입니다. 아래는 Suggestion.js의 코드입니다. 리액트 페이지에서 suggetstions for you 부분에 친구 목록이 뜨지 않고, 다음과 같은 error가 보여집니다. (이전에는 되었던 것 같은데 컴퓨터를 재부팅 한 이후로 되지 않는 것 같습니다...ㅠㅠ) 해결을 어떻게 해야할 지 강사님의 조언을 구하고 싶습니다..! 그럼 미리 감사 인사를 드립니다 ㅠㅠ !!
-
미해결코로나맵 개발자와 함께하는 지도서비스 만들기 1
질문드립니다 ㅠㅠ
GET http://dapi.kakao.com/v2/maps/sdk.js?appkey=3d10a5fa204e2ceb054436e1ce4e1c2a&libraries=services net::ERR_ABORTED 401 (Unauthorized) 오류가 뜹니다 ㅠㅠ 앱키 플랫폼에 로컬호스트 URL을 넣어봤는데도 정상적으로 카카오API를 불러오질 못하네요 ㅠㅠ 뭐가 문제일까요... 도와주시면 감사하겠습니다!! <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> <title>myfirstmap</title> <link rel="stylesheet" href="stylesheets/style.css"/> <script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=nk3nty8fz7"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=3d10a5fa204e2ceb054436e1ce4e1c2a&libraries=services"></script> </head> <body> <!--코로나맵 원페이지뷰로 만들기.--> <div id="navbar">myfirstmap</div> <div id="infoBox"> <div id="infoTitle">현재날짜</div> <div id="infoContent">2021.05.09</div> </div> <div id="search"> <input id="search_input" placeholder="목적지를 입력해주세요"/> <button id="search_button">검색</button> </div> <div id="current">현재위치</div> <div id="map" style="width:100%;height:100vh;"></div> <script type="text/javascript" src="/data/data.js"></script><script> var mapOptions = { center: new naver.maps.LatLng(37.3595704, 127.105399), zoom: 10 }; var map = new naver.maps.Map('map', mapOptions); var markerList = []; var infowindowList = []; for (var i in data) { var target = data[i]; var latlng = new naver.maps.LatLng(target.lat, target.lng); marker = new naver.maps.Marker({ map : map, position : latlng, icon : { content : "<div class='marker'></div>", anchor : new naver.maps.Point(12,12) }, }); /* 자바스크립트에서 작은따옴표 큰따옴표와 비슷한 기능, String값 넣을수있음*/ /* 인포안에 넣을 코드 작성*/ var content = `<div class='infowindow_wrap'> <div class='infowindow_title'>${target.title}</div> <div class='infowindow_content'>${target.content}</div> <div class='infowindow_date'>${target.date}</div> </div>` /* 말풍선 설정 값*/ var infowindow = new naver.maps.InfoWindow({ content : content, backgroundColor : "#00ff0000", borderColor : "#00ff0000", anchorSize : new naver.maps.Size(0,0) }) markerList.push(marker); infowindowList.push(infowindow); } /*클릭이벤트 설정, 클릭했을때 getclickhandler함수가 실행되도록*/ /*즉 클릭하게되면 i번째 마커가 변수에 담기게됨.*/ /*ClickHandler클릭하면 인포윈도우가 열리고 다른 곳 클릭했을때 닫겨야함..*/ /*ClickMap()함수는 인포박스에서 맵을 클릭했을때 자동으로 닫아주는 함수*/ for (var i = 0, ii = markerList.length; i< ii; i++){ naver.maps.Event.addListener(map, "click", ClickMap(i)); naver.maps.Event.addListener(markerList[i],"click",getClickHandler(i)); } function ClickMap(i) { return function() { var infowindow = infowindowList[i]; infowindow.close() } } function getClickHandler(i) { return function() { var marker = markerList[i]; var infowindow = infowindowList[i]; if (infowindow.getMap()){ infowindow.close(); } else { infowindow.open(map, marker) } } } let currentUse = true; $('#current').click(() => { if('geolocation' in navigator){ navigator.geolocation.getCurrentPosition(function(position){ const lat = position.coords.latitude; const lng = position.coords.longitude; const latlng = new naver.maps.LatLng(lat,lng); if (currentUse) { marker = new naver.maps.Marker({ map: map, position: latlng, icon: { content: '<img class="pulse" draggable="false" unselectable="on" src="https://myfirstmap.s3.ap-northeast-2.amazonaws.com/circle.png">', anchor: new naver.maps.Point(11,11), }, }); currentUse = false; } map.setZoom(14, false); map.panTo(latlng); }); } else { alert("위치정보 사용 불가능"); } }); let ps = new kakao.maps.services.Places(); let serach_arr=[] $("#search_input").on("keydown", function(e) { if(e.keyCode === 13){ let content = $(this).val(); ps.keywordSearch(content,placeSearchCB); } }) $("#search_button").on("click", function(e){ let content = $("#search_input").val(); ps.keywordSearch(content, placeSearchCB); }) function placeSearchCB(data,status,pagination) { if(status === kakao.maps.services.Status.OK){ let target = data; const lat = target.y; const lng = target.x; const latlng = new naver.maps.LatLng(lat, lng); marker = new naver.maps.Marker({ position: latlng, map: map, }) if (search_arr.length ==0){ search_arr.push(marker) } else { search_arr.push(marker) let pre_marker = search_arr.splice(0,1); pre_marker[0].setMap(null); } map.setZoom(14, false); map.panTo(latlng); }else{ alert("검색결과가 없습니다.") } } </script> </body> </html>
-
해결됨트렐로 개발로 배우는 Vuejs, Vuex, Vue-Router 프론트엔드 실전 기술
비밀번호 틀리게 입력했을 때, 로그인창에 Login failure 라는 단어가 뜨질 않습니다.
.then(data => { // 토큰을 브라우저 로컬호스트에 저장 localStorage.setItem('token', data.accessToken) setAuthInHeader(data.accessToken) this.$router.push(this.rPath) console.log(data) }) .catch(err => { this.error = err.data.error // this.error = err.response.data.error console.log('에러발생1: '+err) console.log('에러발생2: '+err.data.error) }) 그래서 로그찍어보고 컨솔창에서 확인해보니 아래와 같이 에러가 발생하는데 왜 그런지 모르겠습니다. 에러발생1: TypeError: Cannot read property 'accessToken' of undefined Uncaught (in promise) TypeError: Cannot read property 'error' of undefined at eval (Signin.vue?3d55:88)