국비수업/수업정리
스프링 / 9
밀김
2023. 6. 12. 15:47
728x90
- 로그인은 리디렉션을 사용한다 (클라이언트와의 상호작용)
- 컨트롤러 : 입출력 / 서비스: 업무
- post는 접수만 하고 view를 절대 주면 안된다! 안내창구같은 역할임
- 파람에서 오는 에러가 null값이 아니면 저 오류 메세지가 뜨게 하는것
<div th:if="${param.error}" class="mt-3 d-flex align-items-center ">
아이디 또는 비밀번호가 일치하지 않습니다.
</div>
- 패스워드 검증
public boolean isValid(String username, String pwd) {
Member member = repository.findByUsername(username);
if(member==null)
return false;
else if(!member.getPwd().equals(pwd))
return false;
return false;
}
- 인증받고 다시 돌아올 url을 지정해줘야 한다 post때문에 로그인하고 새로운 페이지로 안내받으면 안됨
이걸 뷰단에서 전달할때 같이 전달해준다
if(session.getAttribute("username")==null)
return "redirect:/sign-in?returnURL=/member/index";
- 이런식으로 html에서 리턴 url을 지정해준다
(input thype="hidden" 입력하지 않은 값을 넘기는 숨겨진 양식)
<input type="hidden" name="returnURL" value="${param.returnURL}" />


if(!returnURL.equals(""))
return "redirect:"+returnURL;
else
return "redirect:/index";

- return url의 목적은 그냥 리턴..이다?
- 쿼리는 get 요청만 받음

- 권한확인하는애 : 필터
- 필터걸어서 못 접근하게 하는 방법
@Component
public class SecurityFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("너 입뺀");
}
- 필터는 여러개 있어도 됨 하지만,먼저 로드된 필터가 이겨버림!!
- 필터의 허락을 안받으면 이미지도 못나옴

//@Component
public class TestFilter implements Filter{
private static String[] authenURLs = {"/member/*","/admin/*"};
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
httpRequest.getRequestURI(); // /member/index
System.out.println("응 안돼~~");
chain.doFilter(request, response);
}
}


@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
//콩자루에 담는 과정
- 인증을 하기 위한 설정 과정..
@Configuration
public class RlandConfig {
// 인증과 권한에 사용되는 객체를 생성해서 <콩자루에 담는> 코드를 작성한다
@Autowired
private PasswordEncoder passwordEncoder;
// 권한을 위한 필터 객체
//@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http.build();
//반환타입: 디폴트 보안 필터 체인
}
// 사용자 정보를 위한 서비스 객체
//1. 인메모리 사용자 정보
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public UserDetailsService userDetailsService() {
UserDetails newlec = User.builder()
.username("newlec")
.password(passwordEncoder().encode("111"))
.roles("ADMIN","MEMBER")
.build();
return new InMemoryUserDetailsManager(newlec);
}
//2. JDBC를 이용한 사용자 정보
//3. 디렉토리 서비스를 이용한 사용자 정보
}
728x90