프로젝트에서 일단 controller, entity, repository, Service 패키지를 사용한다.
나는 포트를 9000번 쓴다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# WAS Port
server.port = 9000
spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/XE
spring.datasource.username=c##user_name
spring.datasource.password=password
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
# JPA ??
spring.jpa.properties.hibernate.hbm2ddl.auto=update
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.OracleDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
logging.level.org.springframework.security=DEBUG
logging.level.org.springframework.web=DEBUG
#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#spring.thymeleaf.cache=false
spring.web.resources.static-locations=classpath:/templates/
|
cs |
page 경로를 templates 로 하지 않았더니 오류가 생겼었다. 경로를 넣지 않아 생기는 문제였다. 처음에는 thymeleaf를 이용하여 넣으려고 했으나 작동하지 않았고, 구글링을 통해
spring.web.resources.static-locations=classpath:/templates/
를 넣으면 해결 되는 걸 알게 되었다. 사실 페이지가 동작하지 않은 경우가 많아서 DEBUG를 보기 위해 디버그 내용도 추가해주었다.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
@Autowired
private CustomUserDetailsService customUserDetailsService;
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(authz -> authz
.requestMatchers("/login", "/signup", "/members/**", "/css/**", "/js/**").permitAll()
.anyRequest().authenticated())
.formLogin(form -> form
.loginPage("/login")
.loginProcessingUrl("/login") // 로그인 처리 URL
.defaultSuccessUrl("/home", true)
.permitAll())
.logout(logout -> logout
.logoutSuccessUrl("/login")
.permitAll())
.userDetailsService(customUserDetailsService); // UserDetailsService 추가
return http.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
MemberController에서는 member을 추가하는 역할을 한다.
@Controller
@RequestMapping("/members")
public class MemberController {
@Autowired
private MemberService memberService;
@PostMapping
public String addMember(
@RequestParam("id") String id,
@RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam("gender") String gender,
@RequestParam("phoneNumber") String phoneNumber,
@RequestParam("age") int age,
@RequestParam("userEmail") String userEmail,
RedirectAttributes redirectAttributes) {
Member member = new Member();
member.setId(id);
member.setUsername(username);
member.setPassword(password);
member.setGender(gender);
member.setPhoneNumber(phoneNumber);
member.setAge(age);
member.setUserEmail(userEmail);
memberService.saveMember(member);
redirectAttributes.addFlashAttribute("message", "회원가입이 성공적으로 완료되었습니다.");
return "redirect:/login";
}
}
그리고 memberService
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
public Member saveMember(Member member) {
// 비밀번호 암호화
member.setPassword(new BCryptPasswordEncoder().encode(member.getPassword()));
return memberRepository.save(member);
}
}
비밀번호는 해쉬로 저장하기로 했다. 처음에는 그냥 PASSWORD를 넣으려고 했는데 아무래도 데이터베이스에 그냥 하드코드로 넣기엔 좀 문제가 될 것 같았다.
'개인공부' 카테고리의 다른 글
dlib library 설치 (0) | 2024.05.21 |
---|---|
Resnet18로 거북목 판정하기 (0) | 2024.05.19 |
[SpringBoot] SpringBoot + Maven (0) | 2024.05.15 |
졸업 작품 주제 (0) | 2024.05.09 |
[ORACLE] 새 계정 생성 (0) | 2024.05.05 |