묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
패스워드 검증은 어디서 이루어지는건가요?
회원가입은 BCryptPasswordEncoder를 통해 패스워드를 암호화를 했었늗데요 @PostMapping("/joinProc") public String joinPorc(User user) { String rawPassword = user.getPassword(); String encPassword = bCryptPasswordEncoder.encode(rawPassword); user.setPassword(encPassword); userRepository.save(user); return "redirect:/login"; }로그인할 떄 에는 따로 패스워드를 따로 검증하지 않고 username만 확인하더라구요@Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User userEntity = userRepository.findByUsername(username); if(userEntity != null){ return new PrincipalDetails(userEntity); } return null; } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }어느 부분에서 자동으로 BCryptPasswordEncoder를 통해 matches하고 검증하는건가요??
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
Content ajax로 갖고오는 부분이 이해가 안됩니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강의 설명중 이해가 안되서 질문드립니다.!1:36 설명에서 수정에서 데이터를 바꾼다음에다시 제목을 눌렀을 때 수정이 되지 않은 내용이 textarea에 보인다고 하셨는데수정을 하면 DB에 수정내용이 반영되서 다시 제목을 누르면 바뀐 내용이 보이는 상황 같은데요content 부분만 ajax로 다시 갖고 오는게 이해가 잘 되지 않습니다.만약에 list로 보여지는 내용 별도의 내용을 더욱 보여줘야 한다면 상세보기를 하는게 맞는거 같은데 현재 예제에서 content 부분만 따로 갖고오는게 이해가 잘 안되네요
-
미해결스프링 시큐리티
spriing boot 3 .acccess() 질문입니다.
spring boot 3 로 진행시 .access() 강의하신것처럼 값이 들어가지지않는데 어떻게 넣어야하나요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
34강 조회수 증가가 새로고침을 해야만 되네요
있는 그대로 타이핑 하고 업뎃까지 한다음에 실행을 해주었는데 열고닫고 할때는 조회수가 증가가 안되지만 새로고침을 해야만 증가가 되네요 왜그러는건가요?
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
Interceptor 여러번 호출
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthInterceptor()); } }@Slf4j public class AuthInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info(" >> preHandle"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { log.info(" >> postHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { log.info(" >> afterCompletion"); } } 호출이 여러번 되는 현상이 발생합니다. preHandle 로그가 3번 찍혀요.검색하여 기본 + 2번 더 호출된다는 글을 보았으나, 제게는 해결책이 아니었습니다.(https://okky.kr/articles/598386)2번 더 호출 될 때에는 request.getParameter null로 넘어옵니다. (acceessToken까지 진행해보다가 롤백했어요 ... 이거부터 해결이 되어야해서 ㅠ.ㅠ)도와주세요 호돌맨님! (git 주소 가렸어요 ! :D)
-
미해결스프링 시큐리티
스프링부트 3버전 사용시 참고하세요
인텔리제이 사용하시면 http.authorizeRequests() <--- 아마 deprecated 됐다고 줄 그어져 있으실텐데 코틀린 버전으로 실습중이긴한데 이런식으로 사용하시면 됩니다.@Bean fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http.authorizeHttpRequests() .requestMatchers("/").permitAll() .requestMatchers("/mypage").hasRole("USER") .requestMatchers("/messages").hasRole("MANAGER") .requestMatchers("/config").hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin() return http.build() }
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
질문이있어요
int result=memberMapper.register(m);이부분은 xml을보면 단순한 쿼리 인서트문장인데 result에 1과 0은 어디서 지정해준건가요?
-
미해결스프링 시큐리티
Method방식의 인가에서 궁금증이 있습니다.
안녕하세요.현재 지금 스프링 부트 2.6.14로 작성중에 궁금한 점이 있습니다. @Secured와 같은 메서드 방식에서 RoleHierarchy가 그대로 적용 되는지 궁금해서 질문드립니다. 혼자서 테스트 할때 ROLE_ADMIN > ROLE_MANAGER > ROLE_USER 구조로 RoleHierarchy를 구성하고 ROLE_ADMIN 권한을 지닌 아이디로 @Secured("ROLE_USER") 메서드를 호출하는데 인가가 안되는데 원래 안되는 것인지 아니면 되는 방향이 있는지 궁금하여 질문드리겠습니다. 감사합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
logout 기능 오류
강사님이 작성한 코드대로 진행을 하여 로그인 기능과 jwt발급, 검증 하는 부분까지 전부 정상작동 하는것 까지 확인했습니다.다만 postman 으로 Header에 jwt토큰 값을 넣고 post방식으로 /logout 메서드를 호출하였으나 404 에러가 뜨고 path는 logout이 아닌 login으로 응답이 내려옵니다.디폴드 로그아웃 url이 /logout 으로 알고 있어서 별도의 로그아웃 기능을 구현하지 않는 상태인데 제가 잘못 알고 있는 것이 있을까요 ???
-
미해결스프링 시큐리티
DelegateFilterProxy 는 서블릿 컨테이너가 다른 프레임워크가 필터를 조작할 수 있게 만들어준 표준을 지키는 구현체인가?
서블릿 컨테이너는 스프링에 종속되지 않게 만들어졌다고 이해했는데요.어느정도 이러한 규제를 완화해주기 위해서 다른 프레임워크가 이용할 수 있는 필터 표준을 만들어줬고 이를 스프링 시큐리티가 구현한게 DelegatingFilterProxy 가 맞을까요?그러면 DelegatingFilterProxy 가 어떻게 Servlet Fitler 로 주입될 수 있을까요?
-
미해결스프링 시큐리티
강의 자료는 어디서 받나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결스프링 시큐리티
SecurityResourceService.getResourceList() 관련질문
resourcesList.forEach(re -> { List<ConfigAttribute> configAttributeList = new ArrayList<>(); re.getRoleSet() .forEach(ro -> { configAttributeList.add(new SecurityConfig(ro.getRoleName())); result.put(new AntPathRequestMatcher(re.getResourceName()), configAttributeList); }); });가 아니라resourcesList.forEach(re -> { List<ConfigAttribute> configAttributeList = new ArrayList<>(); re.getRoleSet() .forEach(ro -> { configAttributeList.add(new SecurityConfig(ro.getRoleName())); }); result.put(new AntPathRequestMatcher(re.getResourceName()), configAttributeList); });이것이 강사님의 의도한바가 아니었을까 생각이 드는데제가 잘못 짚은걸까요?? 참고: 5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2)
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
/board/get?idx=${vo.idx} 질문
상세보기 구현하는 과정에 있어서 궁금한점이 있어서 질문드립니다.get이라는 컨트롤러를 만들고 /board/get?idx=${vo.idx}에서 선택한 idx에 따라서 링크가 이동되는것은 강의에서 잘 풀어주셔서 이해가 잘가는것 같습니다.질문을 드리자면 단순하게 get?idx <--- 여기서 물음표를 넣으셨는데 이건 정해진건지 궁금하고 어떤 이유에서 ?가 적힌건지 궁금합니다. get!!idx 이런식으로 적으니까 안되더라구요 ㅠㅠ...연휴 잘보내시길 바라면서 질 좋은 강의에 감사 드립니다!
-
미해결스프링 시큐리티
SecurityContextHolder에 대한 질문
강의를 듣다 햇갈리는 부분이 있어 질문드립니다.사용자가 로그인 요청을 하여 인증에 실패하면 SecurityContextHolder.clearContext()를 호출하여 SecurityContextHolder를 초기화 하는 것으로 알고있습니다. 그렇다면 사용자A와 사용자B가 동시에 요청하였을 때 사용자A는 로그인에 성공하여 SecurityContextHolder에 저장되고 사용자B는 로그인에 실패하여 SecurityContextHolder.clearContext()를 호출하면 사용자 A의 정보 역시 삭제되는 것이 맞나요?또한 이러한 상황이 나올진 모르겠지만 사용자A의 인증 정보를 Session에 저장하기 전 위의 상황이 발생하여 Session에 사용자 A의 정보가 저장되지 않을 수도 있나요?마지막으로 여러 사용자가 동시에 요청했을 때 SecurityContext context = (SecurityContext) session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY); 해당 구문으로 session에서 값을 찾으면 SPRING_SECURITY_CONTEXT_KEY라는 같은 키로 찾는데 어떻게 사용자를 구분할 수 있는지 궁금합니다.