묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결코드로 배우는 React with 스프링부트 API서버
테일윈드css사용할때
어떤 클래스명이 어떤 css에 해당하는지를 일부내용들은 암기하고 사용하시는건지 궁금합니다! 그냥 사용하다보면 저절로 외워지는건가요?그리고 강의내용과는 별개로 현업에서 디자인같은 부분은 피그마를 많이 사용하는듯 하는데 피그마로 디자인한것을 코드로 변환하는 과정이 어떻게 이루어지나요?피그마 자체기능으로 html코드로 변환한다음에 이걸 잘 가공?해서 프론트코드로 만들어내는건지 아니면 그냥 피그마 이미지만 보고 클론코딩하는것처럼 코드를 작성하는건지 궁금합니다
-
미해결스프링부트 시큐리티 & JWT 강의
세션 인증방식이 REST 원칙에 위배되는 건가요?
세션 인증방식이 REST 원칙에 위배되는 건가요?세션은 stateful합니다.rest는 stateless를 지향하고요그렇다면 세션 인증방식이 REST 원칙에 위배되는 건가요?근데 네이버나 이런사이트들도 세션을 쓰는거 같은데어떻게 개념을 정리해야 하는지 궁금합니다
-
해결됨코드로 배우는 React with 스프링부트 API서버
노란색 경고글을 없애고 싶어요..
프론트 부분에서 ESLint 때문에 계속 에러를 겪고 있는데요,,해결했다 싶으면 신기하게도 다음번 컴퓨터를 키면 또 에러가 생겨있고 그러는데요,빨간색 에러는 없앴는데 노란색 경고글도 없애고 싶습니다.아래 노란색 경고글들도 없앨수 있는 방법이 있을까요...에러때문에 이것저것 시도하다가 뭔가 버전이 안맞는 걸까요...
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
React나 Vue 사용 시 렌더링 질문
서버 사이드 렌더링은 넌적스나 도그스 보니까 이해가 됩니다.React,Vue를 원래 실무에서 사용한다는 뜻은 혹시 클라이언트 사이드렌더링에 관점에서 말씀하신건지 궁금합니다. 서버사이드렌더링 처럼 데이터를 넣어서 static 파일 전달하는 형태를 말씀하신거라면 방법이 궁금합니다 !
-
해결됨스프링부트 시큐리티 & JWT 강의
jwt와 실제데이터의 관계
안녕하세요 강의 잘 보고 있습니다.jwt로 인증을 받은 후에 클라이언트가 필요한 데이터를 서버에서 클라이언트로 전송을 할때 그 데이터들이 해커에게 노출이 되면 안될거 같은데 그 데이터들은 따로 암호화가 돼서 전송이 되는건가요?
-
해결됨스프링부트 시큐리티 & JWT 강의
jwt 와 세션ID의 관계
안녕하세요 강의 잘 듣고있습니다.웹페이지가 서버에 처음으로 요청을 보낼때 서버에서 세션ID가 만들어지는 것으로 알고있습니다.JWT토큰은 로그인 요청시에 서버에서 만들어 지는 것이구요그러면 무조건 처음에는 www.naver.com으로 요청을 보내게 되는데 JWT토큰을 사용한다고 해도 세션ID는 만들어 지는 것이겠네요?
-
미해결스프링부트 시큐리티 & JWT 강의
SecurityConfig에서 세션 설정, 인가 설정
안녕하세요 세션0~세션3까지 왔습니다. JWT들어가기 전에는 authorizeHttpRequests() 여기서 페이지 접근 제어를 하였는데 JWT들어가서는 sessionManagement() 여기에 접근 제어를 하셨는데 구글링을 해봐도 각기 다른 거 같습니다. 저는 일단 // 세션 설정 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .addFilter(corsConfig.corsFilter()) .httpBasic().disable() .addFilter(new JwtAuthenticationFilter(authenticationManager)); // 인가(접근권한) 설정 http.authorizeHttpRequests() .antMatchers("/user/**").authenticated() .antMatchers("/manager/**").hasAnyRole("ADMIN", "MANAGER") .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().permitAll() .and() .formLogin().loginPage("/loginForm") .loginProcessingUrl("/login") .defaultSuccessUrl("/") .and() .oauth2Login().loginPage("/loginForm") .userInfoEndpoint() .userService(principalOauth2UserService) ;이런식으로 하였는데 어떤게 맞는 것인지 잘 모르겠습니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
노드 비동기 동작 질문
0. 대부분 무거운 연산이나 오래걸리는 일들을 비동기로 보내는 것으로 이해했습니다. 그런데 결국 비동기요소들이 Background 대기 후 Task Queue으로 이동 후 Stack이 비었는지 확인 하고 Stack에 이동하여 진행되는 것일 텐데 이것들이 동시에 처리되는 것이라고 볼 수 있나요 ? 아니면 Background에 있는 동안 Promise와 같은 비동기 요소들이 백그라운드에서 동시에 Logic이 처리되고 Queue로 resolve혹은 reject의 값이 Stack으로 넘어가나요 ? 구체적인 동작방식이 궁금합니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
넌적스로 {% include .html} 시 template not found 오류
안녕하세요, 변수에 할당되는 값에 따라서 html 파일을 다르게 include 하고 싶은데,template not found 오류가 뜹니다. 처음에 변수에 값을 넘기고 app.js에서 렌더링할 때 하기와 같이 설정했습니다. 그 뒤, index.html 에해당 코드를 추가하여 viewAlimtalk에 값이 있다면 test.html을 include할 수 있도록 하였습니다. 그런데 오류는 index 템플릿을 찾을 수 없다고 뜹니다. Error: template not found: index at Object._prettifyError (C:\alimtalk\node_modules\nunjucks\src\lib.js:32:11) at C:\alimtalk\node_modules\nunjucks\src\environment.js:464:19 at eval (eval at compile (C:\alimtalk\nodemodules\nunjucks\src\environment.js:527:18), <anonymous>:22:11) at C:\alimtalk\node_modules\nunjucks\src\environment.js:471:11 at eval (eval at compile (C:\alimtalk\nodemodules\nunjucks\src\environment.js:527:18), <anonymous>:16:11) at createTemplate (C:\alimtalk\node_modules\nunjucks\src\environment.js:238:11) at next (C:\alimtalk\node_modules\nunjucks\src\lib.js:260:7) at handle (C:\alimtalk\node_modules\nunjucks\src\environment.js:267:11) at C:\alimtalk\node_modules\nunjucks\src\environment.js:276:9 at next (C:\alimtalk\node_modules\nunjucks\src\lib.js:258:7) index.html에 {% include "test.html" %} 코드를 지우고 실행하면 해당 오류는 없이 index.html이 잘뜨게됩니다 .. 파일구조는 views index.htmltest.html로 되어있고, 넌적스 configure도 views 파일로 설정하였습니다. 왜이런 오류가 뜨게 되는걸까요?? if 값에 따라 html을 동적으로 삽입할 수 있는 다른 방법이 있을까요? 혹은, 버튼 클릭 시 router 을 통한 render가 아닌 바로 넌적스 변수를 변경할 수 있는 코드를 작성할 수는 없을까요?
-
미해결
Next에서 자동 로그인 구현
안녕하세요 😃 현재 Next.js 사용해 프로젝트 진행중인데 한번 로그인하면 웹에 재접속 시 자동으로 로그인 처리되도록 하고 싶습니다. 현업에서는 어떤 방식으로 진행하는지 궁금합니다! 답변 주시면 정말 정말 감사합니다!!
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
ws 프로토콜 연결시 사이트 연결할 수 없음 메세지가 나오고 페이지 호출이 되지 않습니다.
브라우저 사파리에서는 정상동작 합니다참고로 크롬 버젼은 123.0.6312.107(공식 빌드) (arm64)맥에서 실행했습니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
9장 스스로하기 캐싱문제..
지금까지 9장 스스로하기 문제들을 겨우겨우 해결해 나가고 있는데요, 그래도 다른 것들은 제로초님의 강의를 돌려보면서 검색과 함께 해볼만한 난이도였지만, 마지막 캐싱은 어떻게 해야할지 감도 안잡힙니다. 객체를 선언하라는 것도 전역변수에 User 배열을 선언해서 전부 집어넣고 Post도 배열을 만들어서 집어넣으라는 소린지.. 만약 만든다면 어떤 파일에 전역변수를 선언해야할까가 문제입니다. ㅜ 쓰이는 곳도 많아서 쓰이는 곳 마다 해당 파일에 전역변수를 설정해야할까요?
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
좋아요 기능 구현중
models/user에서 static associate(db){ db.User.belongsToMany(db.Post,{ foreignKey: 'postId', as: 'LikedPosts', through: 'Like', }); } 그리고 models/post에서static associate(db){ db.Post.belongsToMany(db.User,{ foreignKey: 'userId', as: 'LikingUsers', through: 'Like', }); }이렇게 해놓았는데이러면 좋아요와 좋아요취소기능은 잘 작동하고 이를통해 프로필을 볼때 사용자가 좋아요한 게시글들만 볼 수 있는 기능도 잘 작동합니다.하지만 mysql workbench를 보면이와같이 userId에 post의 Id가, postId에는 userId가 들어가있는데요, 그래서 foreignKey를 post에선 postId로, user 에선 userId로 바꿨더니 Like 테이블에 삽입하려는 postId가 users 테이블의 id와 관련하여 참조 무결성 제약 조건을 위반했다는 오류가 뜹니다! ㅜ왜이런 현상들이 일어나는지 검색을 해도 안나와서 여쭤봅니다!
-
미해결코드로 배우는 React with 스프링부트 API서버
repository에 ProductSearch랑 Impl을 작성하셧는데
섹션2 영상에선 TodoSearch랑 TodoSearchImpl 작성한건 어떻게 해야하나요 Todo 삭제하고 이번 수업에 있는 ProductSearch, ProductSearchImpl로 다 바꿔야 하는건가요 ?
-
미해결코드로 배우는 React with 스프링부트 API서버
npm start 하면 발생되는 에러 메시지
(node:8952) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. (Use `node --trace-deprecation ...` to show where the warning was created) (node:8952) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. 리액트 실행이랑 강의 내용대로 정상적으로 동작 되는데, npm start 를 수행하면 위와 같은 문구가 출력됩니다. 구글에 검색해봤는데 해결 방법과 원인이 다양해서 적합한 해결책을 못찾았습니다. 무시해도 되는 에러일까요? 어떻게 처리하는지 궁금합니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
res.locals에 follower에 관해 저장할때 다른방법
수업중에서 res.locals에 follower에 관해 저장할때 deserialize 에서 include를 하면서 req.user에 추가를 해주었는데요,제로초님이 await으로 userfindOne을 해서 어떻게 하는 다른방법도 있다고 하셨는데 그 코드를 알려줄수있을까요?저 혼자 해보는데 잘 안되네요.
-
미해결스프링부트 시큐리티 & JWT 강의
섹션2 9강까지 듣고 질문이 있습니다. 스프링부트 버전을 다운그레이드해도 될까요?
강의나 자료의 최근 버전은 2.5.7이고, 현재 제 프로젝트의 버전은 3.2.3입니다.스프링부트가 업그레이드 되면서, 바뀐 부분에 대해서도 커뮤니티와 스프링 공식 문서를 보고 반영하였습니다.하지만 여전히 같은 에러가 반복되고, 일주일 넘게 붙잡았지만 당장 남은 시간은 없어 촉박한 상황입니다.수정한 부분: package com.cos.security1.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import com.cos.security1.config.oauth.PrincipalOauth2UserService; @Configuration // IoC 빈(bean)을 등록 @EnableWebSecurity // 위 활성화 ⇒ 이를 활성화하면 스프링 시큐리티 필터가 스프링 필터체인에 등록이 된다. //특정 주소 접근시 권한 및 인증을 위한 어노테이션 활성화 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) // secured 어노테이션 활성화, preAuthorize&postAuthorize 어노테이션 활성화 public class SecurityConfig { // Oauth 관련 @Autowired private PrincipalOauth2UserService principalOauth2UserService; // @Bean을 적으면 -> 해당 메서드의 리턴되는 오브젝트를 IoC로 등록해준다. @Bean public BCryptPasswordEncoder encodePwd() { return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf(cs-> cs.disable()); http .authorizeHttpRequests((authz) -> authz .requestMatchers("/user/**").authenticated() // authenticated(): 인증 완료해야 접근 가능 .requestMatchers("/manager/**").hasAnyAuthority("ROLE_ADMIN","ROLE_MANAGER") //인증 후, admin이나 manager권한 있어야 함 .requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")//인증 후, admin 권한 있어야 함 .anyRequest().permitAll()); // anyRequest(): 그 외 나머지 리소스들, permitAll(): 설정한 리소스의 접근을 인증절차 없이 허용한다는 의미 http.formLogin(form -> form // 로그인 페이지와 기타 로그인 처리 및 성공 실패 처리를 사용하겠다는 의미 .loginPage("/loginForm") // 사용자가 따로 만든 로그인 페이지를 사용하려고 할때 설정 .loginProcessingUrl("/login") //로그인 즉 인증 처리를 하는 URL을 설정. //해당 URL이 호출되면 시큐리티가 낚아채서 대신 로그인 인증처리를 수행. // 따라서 Controller에 /login을 만들지 않아도 된다. .defaultSuccessUrl("/")); // 정상적으로 인증성공 했을 경우 이동하는 페이지 http.oauth2Login(oauth2 -> oauth2 // oauth .loginPage("/loginForm") // 구글로그인이 완료된 후, 후처리가 필요 // !Tip! 구글 로그인이 완료가 되면 코드 X, 액세스토큰+사용자프로필 정보를 한방에 받음 .userInfoEndpoint(userInfo -> userInfo .userService(principalOauth2UserService))); return http.build(); } } 에러나는 부분:java.lang.NullPointerException: Cannot invoke "com.cos.security1.config.auth.PrincipalDetails.getUser()" because "principalDetails" is null 그래서 결론적으로는 프로젝트의 버전을 2.5.7로 다운그레이드해도 괜찮을지 여쭙고 싶습니다...프로젝트 내 다른 라이브러리도 고려해야겠지만 현업이나 다른 분들도 프로젝트할 때 버전 낮춰서 진행하는지 그래도 괜찮은지 궁금해서 질문드립니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
upload2를 안쓰고 그냥 해도 되지않나요?
강의중 제로초님이 routes폴더의 post.js를 작성하실때const upload2 = multer();router.post('/', isLoggedIn,upload2.none(), uploadPost);이렇게 작성하셨는데,그냥 router.post('/', isLoggedIn, uploadPost);로 작성해도 되지않나요?
-
미해결코드로 배우는 React with 스프링부트 API서버
TypeError: Cannot read properties of undefined (reading 'map')에 대한 문제
크롬에서의 문제입니다웹스톰 내에서는 또 다른 문제가 있다고 하네용 import { useEffect, useState } from "react"; import { getList } from "../../api/productsApi"; import useCustomMove from "../../hooks/useCustomMove"; import FetchingModal from "../common/FetchingModal"; import { API_SERVER_HOST } from "../../api/todoApi"; import PageComponent from "../common/PageComponent"; import useCustomLogin from "../../hooks/useCustomLogin"; const host = API_SERVER_HOST const initState= { dtoList:[], pageNumList:[], pageRequestDTO: null, prev: false, next: false, totalCount: 0, prevPage: 0, nextPage: 0, totalPage: 0, current: 0 } const ListComponent = (props) => { const {page, size, refresh, moveToList, moveToRead} = useCustomMove() const {exceptionHandle} = useCustomLogin() //serverData는 나중에 사용 const [serverData, setServerData] = useState(initState) //for FetchingModal const [fetching, setFetching] = useState(false) useEffect(() => { setFetching(true) getList({page,size}).then(data => { console.log(data); if(data && data.dtoList){ setServerData(data); } setFetching(false); }).catch( err => exceptionHandle(err)) }, [page,size, refresh]) return ( <div className={"border-2 border-blue-100 mt-10 mr-2 ml-2"}> {fetching ? <FetchingModal/> :<></>} <div className="flex flex-wrap mx-auto p-6"> {serverData.dtoList && serverData.dtoList.map(product => <div key= {product.pno} className="w-1/2 p-1 rounded shadow-md border-2" onClick={() => moveToRead(product.pno)} > <div className="flex flex-col h-full"> <div className="font-extrabold text-2xl p-2 w-full "> {product.pno} </div> <div className="text-1xl m-1 p-2 w-full flex flex-col"> <div className="w-full overflow-hidden "> <img alt="product" className="m-auto rounded-md w-60" src={`${host}/api/products/view/s_${product.uploadFileNames[0]}`}/> </div> <div className="bottom-0 font-extrabold bg-white"> <div className="text-center p-1"> 이름: {product.pname} </div> <div className="text-center p-1"> 가격: {product.price} </div> </div> </div> </div> </div> )} </div> <PageComponent serverData={serverData} movePage={moveToList}></PageComponent> </div> ); } export default ListComponent;Listcomponent에 문제가 있다고 해서 찾아보려고 하는데 어떻게 봐도 모르겠습니다ㅜㅜ 누구든 도와주세요
-
미해결코드로 배우는 React with 스프링부트 API서버
소셜로그인시 이메일 중복 관련 처리 문의
소셜로그인 강의까지 봤는데요,강의에 있는 프로세스는소셜로그인시 이메일을 가져와서 DB에 저장이 되어있지 않으면 카카오이메일로 회원가입을 시키고, DB에 저장이 되어있으면 비밀번호 없이 해당 계정으로 로그인이 되게끔 만드는 프로세스로 이해 했습니다.그런데, 기존에 회원가입을 하지 않은 사람이 소셜로그인을 할 때 이미 기존에 가입되어 있는 이메일이 있다면 다른사람 계정을 비밀번호 없이 로그인 할 수 있게되는게 지금 구현한 상황에서는 맞는거죠? ex) 기존에 회원가입한 'A' 의 이메일이 test@AAA.com 일 때신규 유입된 사람 'B'의 카카오계정 이메일이 test@AAA.com 인 경우 위와 같은 경우를 방지하려면 소셜로그인시(최초로그인) 회원가입을 시킬 때 이메일 중복체크를 하고 중복되어있다면 다른 이메일 사용을 권유 해야되는식으로 처리를 해야 하는건가요?
주간 인기글
순위 정보를
불러오고 있어요