Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 상속
- 메소드
- Integer.MIN_VALUE
- 인터페이스
- docker
- Integer.MAX_VALUE
- interface
- javascript
- scanner
- 문자열
- 2차원 배열
- 자바
- If
- 다형성
- 삼항 연산
- 상수
- extends
- 중첩for문
- 이중 배열
- Else If
- 삼항 연산식
- super()
- 배열
- jsp
- arraylist
- Break
- 오버로딩
- for문
- rs.next()
- 이클립스
Archives
- Today
- Total
개발로드
★KDT 2024-04-05☆SpringBoot-Maven- SpringSecurity 본문
SecurityConfig
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
//< 요청에 대한 접근 권한을 설정 >
//#1. 로그인 또는 인증 없이 들어갈 페이지 : 정적 리소스 부분, css, img, js, 상품 상세 페이지 조회..
//# 2. 로그인 인증 해야 볼 수 있는 페이지 : 상품 주문, 장바구니,게시판 글쓰기,..
//#3. 관리자 권한이 필요한 페이지 : 상품등록, 회원관리, 게시판 관리, 관리....
// 모든 사용자에게 허용 : css, js, img, members, item, imgages
// Admin역할을 가진 사용자에게만 허용 : /admin/**
// 나머지 모든 요청은 인증된 사용자에게만 허용, 허용이외의 것은 모든 요청에 대해 기본적인 보안규칙을 정의
http.authorizeRequests()
.requestMatchers("/css/**", "/js/**", "/img/**","/member/**").permitAll()
.requestMatchers("/", "/members/**", "/item/**", "/images/**").permitAll()
.requestMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated();
//사용자 정의 로그인 페이지 및 로그인 처리를 설정
// http.formLogin()
// .loginPage("/members/login") //사용자가 인증되지 않은 경우 이 페이지로 리다이렉트됨
// .defaultSuccessUrl("/")
// .usernameParameter("userid") //email
// .failureUrl("/members/login/error")
// .and() //로그인 설정과 로그아웃 설정을 연결하기 위한 메소드
// .logout()
// .logoutRequestMatcher(new AntPathRequestMatcher("/members/logout")) //로그 아웃 요청패턴
// .logoutSuccessUrl("/");
//인증이 필요한 리소스에 접근할 때 발생하는 예외 처리-사용자 인증 설정
// http.exceptionHandling()
// .authenticationEntryPoint(new CustomAuthenticationEntryPoint() );
//SecurityFilterChain을 반환
return http.build();
}//end of filterChain
signInController
@PostMapping("/signIn")
public String signIn(@Valid MemberDto memberDto, BindingResult bindingResult, Model model){
//dto 유효성 검사
if (bindingResult.hasErrors()){
log.info("dto 유효성에러");
return "member/signIn";
}//end of if
try {
//비밀번호 암호화해서 객체생성
Member member = Member.createMember(memberDto, passwordEncoder);
//생성된 객체 db에 저장(insert)
//이미가입된 회원있는지 유효성검사
log.info(member.toString());
service.saveMember(member);
}catch (IllegalStateException e){
//회원가입 실패시 설정해둔 에러메세지를 가지고 다시 회원가입페이지로 이동
log.info("중복회원 에러");
model.addAttribute("errorMessage",e.getMessage());
return "member/signIn";
}//end of try-catch
return "redirect:/";
}//end of signIn
코드설명
- signIn 메서드는 @PostMapping 어노테이션이 지정된 메서드로, POST 요청을 처리합니다.
- @Valid 어노테이션을 사용하여 memberDto 객체의 유효성을 검사합니다.
- 이 유효성 검사는 DTO 객체의 필드에 대한 제약 조건을 검증합니다.
- 유효성 검사가 실패하면 BindingResult 객체에 에러가 저장됩니다.
- 유효성 검사가 실패하면 if (bindingResult.hasErrors()) 구문이 실행되어 "member/signIn" 페이지로 다시 리다이렉트되고, 이때 유효성 검사 에러를 처리합니다.
- 유효성 검사를 통과하면, Member 객체를 생성합니다.
- 이때, Member.createMember() 메서드를 사용하여 memberDto와 passwordEncoder를 전달합니다.
- 이 메서드는 회원 객체를 생성하고, 비밀번호를 암호화한 후 반환합니다.
- 생성된 Member 객체를 데이터베이스에 저장합니다.
- 이미 가입된 회원인지를 확인하고, 중복된 회원이라면 IllegalStateException 예외가 발생합니다.
- 예외가 발생하면, catch 블록에서 해당 예외를 처리하고, 에러 메시지를 모델에 추가하여 "member/signIn" 페이지로 이동합니다.
- 모든 과정이 정상적으로 진행되면, 회원가입이 완료되었으므로 메인 페이지로 리다이렉트합니다.
- 이 코드는 회원가입 과정을 담당하며, 유효성 검사, 비밀번호 암호화, 중복 회원 확인 등을 처리합니다.
여유가 되신다면 제 GitHub에 오셔서 좋은 코드들을 구경해주세요!

https://github.com/gimpo5975?tab=repositories
gimpo5975 - Overview
gimpo5975 has 6 repositories available. Follow their code on GitHub.
github.com
'JAVA' 카테고리의 다른 글
| ★KDT 2024-04-15☆SpringBoot-쇼핑몰(1) (0) | 2024.04.15 |
|---|---|
| ☆KDT 2024-04-08★SpringBoot-Maven-Thymeleaf Layout Dialect (0) | 2024.04.08 |
| ☆KDT 2024-04-04★SpringBoot-Maven-암호화, 어노테이션,회원가입 (0) | 2024.04.04 |
| ★KDT 2024-04-03☆SpringBoot-Maven- SpringSecurity,Test, 계층분리 (0) | 2024.04.03 |
| ☆KDT 2024-04-02★SpringBoot-Maven-JpaRepository (0) | 2024.04.02 |