4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2024년 8월 17일 01:42 #129685
dt참가자CommentController 클래스에서 코드를 이렇게 작성했고,
package com.jaeyeong.sbmall.comment;
import com.jaeyeong.sbmall.member.CustomUser; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.security.core.Authentication;
@Controller @RequiredArgsConstructor public class CommentController<CustomUser> {
private final CommentRepository commentRepository;
@PostMapping("/comment") String postComment(@RequestParam String content, @RequestParam Long parent, Authentication auth) { CustomUser user = (CustomUser) auth.getPrincipal(); var data = new Comment(); data.setContent(content); data.setUsername(user.getUsername()); // 이 부분에서 오류남 data.setParentId(parent); commentRepository.save(data); return "redirect:/list"; } } CustomUser 클래스도 따로 아래와 같이 분리했는데
package com.jaeyeong.sbmall.member;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.User;
import java.util.Collection;
public class CustomUser extends User { public String displayName; public CustomUser( String username, String password, Collection<? extends GrantedAuthority> authorities ) { super(username, password, authorities); } } 자꾸 CommentController.java의 'data.setUsername(user.getUsername());' 부분에서 'Cannot resolve method 'getUsername' in 'CustomUser''라는 오류가 발생합니다.
2024년 8월 19일 03:28 #129732
dt참가자loadUserByUsername 함수 다시 확인해봤는데, 강의에서 가르쳐 주신 대로 그대로 잘 되어 있습니다.. 실제로 CustomUser가 MyUserDetailsService.java에 들어 있을 때는 잘 작동이 되었었구요.. @RequiredArgsConstructor @Service public class MyUserDetailsService implements UserDetailsService { private final MemberRepository memberRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { var result = memberRepository.findByUsername(username); if (result.isEmpty()) { throw new UsernameNotFoundException("그런아이디 없음"); } var user = result.get(); List<GrantedAuthority> authorities = new ArrayList<>(); authorities.add(new SimpleGrantedAuthority("일반 유저")); var a = new CustomUser(user.getUsername(), user.getPassword(), authorities); a.displayName=user.getDisplayName(); return a; } } MyUserDetailsService 클래스가 이대로 되어 있던데, loadUserByUsername에서 잘못된 부분은 없지 않나요?
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.