SecurityConfig에 아래 코드를 추가해야 configuration.addExposedHeader("Authorization"); JwtToken 값을 받을 수 있다고 하셨는데요. 해당 라인을 추가 안해도 JwtToken 값이 찍히고 로컬 스토리지와 세션 스토리지에 토큰값이 들어가지네요. 굳이 추가 안해도 되는건가요?
안녕하세요 초보 개발자 입니다. 강의 너무 잘 듣고 있어요! 궁금한 점이 있어서 질문 드립니다. security 필터를 다 거치고 Controller에서 주소가 api/admin이면 Authentication객체의 role이 ADMIN인지 확인 한다고 하셨는데, securityConfig의 antMatchers("/api/admin/**").hasRole("" + UserEnum.ADMIN) 이부분에서 설정 했다고 생각합니다. 궁금한 점이 꼭 Authentication객체에서 ADMIN을 가지고 있는 변수의 이름이 꼭 role이여야만 가능 한걸까요? security에서 api/admin이 나오면 Authentication객체 내부에서 role이란 이름을 가진 변수를 찾아보는 걸까요? 아니면 해당사항을 설정한 사항이 따로 있었을까요? 답변 감사합니다!
안녕하세요, 강의를 잘 듣고 있습니다. 모델 필드에 있는 몇몇 필드들이 admin에 나타나지 않더군요 예를 들면, updated_at, created_at 같은 필드들이요 이를 위해서 admin 페이지에 일일히 모델 필드를 list_display에 등록해줘야 하는게 맞나요? from django.contrib import admin # Register your models here. from .models import * admin.site .empty_value_display = "-empty-" admin.site .register(Product) admin.site .register(CartProduct) class OrderAdmin(admin.ModelAdmin): list_display = ['customer', 'transaction_id', 'total_price'] admin.site .register(Category) admin.site .register(UserProfile) admin.site .register(Order) admin.site .register(OrderedProduct) admin.site .register(ShipmentInfo) 그럼 제가 직접만든 모델의 경우에는 그렇다 쳐도.. allauth에 있는 site domain 부분이 나오질 않는거에요 ㅠㅠ... 제가 뭘 잘못 건드렸는 지 모르겠는데, 맨처음 프로젝트할 때에는 allauth의 소셜 어플리케이션 부분에 사이트 도메인을 입력할 수 있는 커다란 박스가 있었는데, 그것만 또 안난옵니다. 제가 뭘 잘못한건지 ㅠㅠ 원래 잘 나오던건데... 이번에 파이참 커뮤니티 에디션에서 유료버전으로 바꾸고, 프로젝트를 만들고 나니 admin에 몇몇 모델의 필드들이 잘 보이지 않습니다. verbose name을 설정된것들이 특히 그런 거 같은데 무엇이 문제인지 도통 모르겠습니다. 그렇다고 allauth를 제가 admin에 등록해야하는걸까요? 2.제가 모르는 무언가가 있는걸까요?
안녕하세요. 아래 섹션 실습 중, 에러가 발생하여 문의드립니다. 섹션 9 : [응용] 윈도우 관리학 - (1)베이그런트를 이용해서 윈도우를 추가하기 Ansible_env_ready.yaml 에 아래와 같이 추가 후, vagrant provision ansible-server을 수행했는데 pvwinrm 설치 과정에서 에러가 발생하였습니다. - name: Install python-pip yum: name: python-pip state: present - name: Install pywinrm pip: name: pywinrm state: present ansible-server에 접속하여 수동으로 pip install pywinrm을 수행했는데 역시 에러가 발생합니다. python 버전을 업그레이드 하라고 메시지가 나오는데 향후 수업 따라하기 시, 영향이 있을 듯 하여 선뜻 테스트하지 못 하고 있습니다. 해결 방법에 대해서 가이드 부탁드리겠습니다. 감사합니다 !
jwt 부분을 다 듣고 아래 테스트 수업 듣는 중입니다. 사용자 로그인 시에 우리가 jwt를 발급하고, 사용자가 매 요청마다 이걸 가져오면 검증하는 건 이해가 됐습니다. 그러다 문득 궁금해진 게, 저희가 테스트할 때는 포스트맨을 통해 헤더의 Authorization에 토큰을 직접 넣어주었습니다. 하지만 실제 어플리케이션에선 사용자가 직접 이 작업을 하지는 않죠. 그렇다면 사용자 요청 헤더의 Authorization에 토큰을 포함해야 하는 건 서버 측에서 해야할 일 같은데 이에 대한 강의는 없는 것 같습니다. 혹시 자세하게는 아니라도 대충 어떠하게 흘러가는 지 알려주실 수 있을까요??
기존에는 SecurityConfig 클래스의 SecurityFilterChain에서 아래의 코드가 로그인 실패 시 응답을 처리하는 주체였습니다. http.exceptionHandling() // 인증 예외 설정 .authenticationEntryPoint((request, response, authenticationException)->{ // 예외 가로채기\ CustomResponseUtil.fail(response, "로그인을 진행해주세요", HttpStatus.UNAUTHORIZED); }); 그러다 JwtAuthenticationFilter를 만들면서 attemptAuthentication() 매서드가 실패 시 아래의 unsuccessfulAuthentication()가 실행되게끔 했구요. @Override protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException { CustomResponseUtil.fail(response, "로그인 실패", HttpStatus.UNAUTHORIZED); } 그래서 헷갈려서 실험해보니 기존의 SecurityFilterChain의 것은 주석처리해도 아무런 상관이 없고, unsuccessfulAuthentication()가 동작하더라구요. 이 두 코드의 차이는 정확히 어떤 것일까요?
※※※※※ 해결완료 ※※※※※ mvc.perform()의 get이나 post 같은 매서드 타입을 스태틱임포트 해야하는데 이 때 선택지가 3개 있습니다. 이 중 MockMvcRequestBuilders의 post()를 임포트 하니까 해결이 됐습니다. RequestBuilder로 캐스팅을 해주지 않아도 되구요 그리고, 이래저래 해보면서 MockMvc 말고도 MockMvcBuilder 객체를 이용해서 build().perform()으로 시작해 똑같이 코드를 작성하면 테스트가 정상적으로 실행됩니다! ※※※※※ 해결완료 ※※※※※ SecurityConfig 테스트 강의에도 질문을 드렸는데.. 답이 없길래 그냥 넘어갔는데 여기서도 쓰여 다시 질문드립니다. MockMvc를 이용해서 테스트를 진행할 때, @Test @DisplayName("회원가입 테스트") void join_test() throws Exception { // given JoinRequestDto joinRequestDto = JoinRequestDto.builder() .username("minsu") .password("1234") .email("minsu@gmail.com") .fullname("김민수") .build(); String requestBody = objectMapper.writeValueAsString(joinRequestDto); System.out.println("requestBody = " + requestBody); // when ResultActions resultActions = mvc.perform((RequestBuilder) post("/api/join").content(requestBody).contentType(MediaType.APPLICATION_JSON)); // then } 위 부분에서 문제가 생기는 부분은 아래 코드인데요 // when ResultActions resultActions = mvc.perform((RequestBuilder) post("/api/join").content(requestBody).contentType(MediaType.APPLICATION_JSON)); 먼저 content를 설정할 수 있는 api?가 없고요. 해당 구문을 RequestBuilder로 캐스팅해야 빨간줄이 사라집니다. 그러니까 perform()이 파라미터로 RequestBuilder를 받게 돼있습니다. gradle은 아래와 같습니다. plugins { id 'java' id 'org.springframework.boot' version '2.7.12' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'io.com' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.auth0:java-jwt:4.2.1' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' } 그리고 테스트쪽 라이브러리는 아래와 같습니다. Gradle: org.junit.jupiter:junit-jupiter:5.8.2 Gradle: org.junit.jupiter:junit-jupiter-api:5.8.2 Gradle: org.junit.jupiter:junit-jupiter-engine:5.8.2 Gradle: org.junit.jupiter:junit-jupiter-params:5.8.2 Gradle: org.junit.platform:junit-platform-commons:1.8.2 Gradle: org.junit.platform:junit-platform-engine:1.8.2 Gradle: org.mockito:mockito-core:4.5.1 Gradle: org.mockito:mockito-junit-jupiter:4.5.1
안녕하세요 선생님 유튜브에 이어 인프런에서도 잘 보고 있습니다.| 다름이 아니라 SecurityConfigTest에서 이번 강의의 첫 테스트 코드를 작성하고 있는데, ResultActions resultActions = mvc.perform(get("/api/s/hello")); 코드에서 get()이라는 매서드에서 빨간 줄이 뜹니다. 그러니까 자동완성으로도 get()이라는 매서드는 뜨지 않고, More Action에도 적절한 답이 없습니다. 보면 매서드를 스태틱 임포트한 것 같은데.. 혹시 제가 이상한건가요?
sqliteBrowser 사용하는 수업에서 db.sqlite3를 열려고 하니, database is locked 라는 메시지가 뜹니다. 그래서 ChatGPT나 Bard... Googling을 이용해봤지만, 저에게 해당될만한 내용이 없네요. 혹시 몰라 재부팅도 해봤습니다. 이거 DB부분만 지웠다가 다시 까는 방법이 있을까요? (makemigrations, migrate 부분)
안녕하세요 선생님 현재 모델링 및 평가(회귀)부분을 학습하고 있습니다. 코드를 따라가면서 실습을 진행하고 있는데, rmse 값이 선생님과 달라 질문 드립니다. 제가 알기로는 모델링을 하는 과정에서 예측한 값이 달라질 수 있고, 이에 따라 평가지표인 rmse 값이 다를 수 있다...라고 알고 있습니다. 그런데 값의 차이 뿐만이 아니라 baseline과 scaler 적용 결과가 좋은지 나쁜지가 달라 질문드립니다. 예를 들어, 선생님께서 하셨을때는 RandomForestRegressor의 baseline이 rmse값이 가장 좋았고(작았고), scaler를 적용했을 때 rmse가 커져서 scaler 적용은 하지 않는게 좋다~라는 내용의 실습이었는데 제가 했을 때는 baseline의 rmse보다 scaler를 적용했을 때의 rmse가 작아 scaler를 적용하는 것이 좋다..는 결론이 나옵니다. 질문을 정리하자면, 모델링을 하는 과정에서 선생님과 제가 실습한 예측값과 rmse가 다른게 맞는지 다른게 맞다 해도 scaler 적용여부 등을 바꿀 수 있을 정도로 예측값과 rmse가 달라질 수 있는지 (추가질문)달라지더라도 선생님 실습값 : 4728.xx 제 실습값 6025.174022213681 이정도로 달라질 수 있는지... (추가질문) 모델링 및 평가(회귀) 24:56에서 수험자는 알 수 없는 영역>y_test로 rmse로 구하시고 결과값이 17909.xx로 나왔는데 여기에서도 charges에 로그변환 한 이후기 떄문에 원래는 np.exp(pred)로 rmse를 구했어야 하는지 일 것 같습니다. 감사합니다.
파이참으로 100~200 까지 3의 배수 인쇄하고, 그의 합 구하고 있는데 3의 배수 5개씩 인쇄는 잘 했는데 합계가 이상하게 구해집니다. 오류가 어디에 있는 건지 모르겠어요.. 고치면 오류떠서 아예 실행이 안되는데 ㅜㅜ for문이랑 while문 두개로 만들고 있는데 둘다 합계만 이상하게 뜹니다. ㅠ <<for문>> a = 0 hap = 0 count = 0 for a in range(100, 201) : if a % 3 == 0 : print(a) count = count + 1 if count % 5 == 0 : print() a = a + 1 hap = hap + a print("100~200 중 3의 배수의 합 : %d" % hap) <<while문>> a = 100 count = 0 hap = 0 while a <= 200 : if a % 3 == 0 : print(a) count = count + 1 if count % 5 == 0 : print() a = a + 1 hap = hap + a print("100~200 중 3의 배수의 합 : %d" % hap)
[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
위에 코드와 같이 웹서버를 열 때 처음 실행만 정상적으로 뜨고 두 번째부터는 로드중으로 계속 화면에 아무것도 안 뜹니다. 주피터 노트북과 아나콘다 프로그램을 완전히 종료하고 다시 접속해 위에 코드를 입력하면 다시 처음만 정상실행되고 두번째부터는 무한로드중으로 뜹니다. 다른 컴퓨터로 실행해봤을 때는 정상적으로 화면에 출력되는 것을 확인했고 제 노트북만 이러네요. 이거 때문에 아나콘다도 다시 설치해보고 윈도우에 내장되어 로컬호스트 주소도 확인하고 윈도우도 재설치해보고 컴퓨터 자체를 포맷해봤는데도 계속 같은 증상이네요. 혹시 문제가 무엇일까요? 이거 때문에 수업 진도를 못 나가고 있어요. 도와주세요ㅠㅠ