회원가입과 합친 후 : 암호화와 비교해서 로그인까지는 구현 예정임 ㅠㅠㅠㅠ(의존성 문제 자꾸 발생해서 해결 할 예정) ⇒ 해결
순한 의존문제로 loginServiceImpl부분 관련된 것을 Config에서 다 막아버리고 로그인에서 구현 해버림
package com.in4mation.festibook.config;
import com.in4mation.festibook.jwt.JwtUtils;
import com.in4mation.festibook.service.login.LoginServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration // 해당 클래스를 Spring Configuration으로 등록
@EnableWebSecurity // Spring Security를 활성화
@EnableGlobalMethodSecurity(prePostEnabled = true) // 메소드 수준에서의 보안을 활성화
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/* @Autowired // JwtUtils Bean을 주입
private JwtUtils jwtUtils;
@Autowired
private UserDetailsService loginService;*/
private final JwtUtils jwtUtils;
/* private final LoginServiceImpl loginService;*/
@Autowired
public SecurityConfig(@Lazy JwtUtils jwtUtils/*, LoginServiceImpl loginService*/) {
this.jwtUtils = jwtUtils;
/*this.loginService = loginService;*/
}
@Override // HttpSecurity를 사용하여 Web Security 설정을 오버라이드한다.
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable() // CSRF(사이트 간 요청 위조) 공격 방어를 비활성화
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
// 세션을 생성하지 않으며, STATELESS로 설정하여, 서버가 상태를 저장하지 않게합니다.
.and()
.authorizeRequests() // HttpServletRequest에 따라 접근을 제한
.antMatchers("/**").permitAll() // 모든 경로에 대해 접근을 허용
// .antMatchers(
// "/api/login"
// ).permitAll()
.anyRequest().authenticated(); // 그 외의 모든 요청은 인증을 요구
;
}
/*@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(loginService).passwordEncoder(passwordEncoder());
}*/
/* // void로 쓰면 안됨!!!!
@Autowired // AuthenticationManagerBuilder를 주입받아 사용자 세부 서비스를 설정
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(loginService).passwordEncoder(passwordEncoder());
// 사용자의 세부 서비스를 설정하고, 비밀번호 인코더를 설정합니다.
}*/
@Bean // AuthenticationManager Bean을 생성하여 Spring Context에 등록
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean(); // 기본 AuthenticationManager Bean을 반환
}
@Bean // PasswordEncoder Bean을 생성하여 Spring Context에 등록
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); // 비밀번호를 인코딩하는데 사용되는 BCryptPasswordEncoder를 반환
}
}
비밀번호 찾기 대신 비밀 번호 재설정으로 바꿔야 할 것 같다 ㅠㅠ
비밀번호를 복구하는 것은 일반적으로 안전하지 않으며, 대부분의 시스템은 이를 허용하지 않습니다. 비밀번호는 해시와 솔트를 사용하여 암호화되기 때문에, 일단 비밀번호가 암호화되면 원래의 비밀번호로 되돌릴 수 없습니다. 이것이 바로 해시 함수의 한 방향성(one-way) 특성 때문
비밀번호 재설정:
비밀번호 재설정 링크 제공:
사용자가 비밀번호를 잊어버렸다고 알리면, 시스템은 사용자의 이메일 주소로 비밀번호 재설정 링크를 보냅니다.
유효한 토큰 확인:
사용자가 링크를 클릭하면, 시스템은 URL에 포함된 토큰이 유효한지 확인합니다.
비밀번호 변경 허용:
토큰이 유효하다면, 사용자에게 새로운 비밀번호를 설정할 수 있는 페이지를 제공합니다.
12일~13일 오전
까지는 자신의 파트 마무리 짓고 13일 오후
에는 하나의 파일에 합치는 게 목적14일 멘토링 때
설명할 수 있을 정도면 되고 사진 정도만 넣고 설명해도 되기 때문에 넣는 정도로만 목표로만 하면 되는데 사진 정도는 넣어주셔야 합니다! 사진이나 설명해야 함14일 오후 ~ 17일
까지 배포와 배포 도중 에러 고치고 깃허브 리드미에 설명 올리고 18일
에 마무리 + 발표준비 19일
발표 및 각자 보내기하면 될 것 같습니당1. 인삼축제(파주) - 지역특산물
2. 수원화성문화제 - 전통역사
3. 이천도자기축제 - 지역특산물
4. 장미축제 - 생태자연
5. 소래포구축제 - 문화예술
start 기간
이 이상카테고리 확정
- 문화예술
- 주민화합
- 전통역사
- 지역특산물
- 생태자연
파일 합치기
금요일 각자 노션에 올려준 이미지 합쳐서 이미지 경로를 저장해서 수정 후 합친 파일 올려 드림
문제점 : 이후 보니까 csv 파일에 인코딩이 잘못되어 있어서 데이터베이스에 한 번에 insert 할 때 한글 깨짐 현상
해결 : 메모장으로 열어서 => 다른이름 저장 => 다시 데이터 베이스에 넣으니 문제없이 작동
많이 걱정했는데 어찌저찌 진행은 될 것 같아 다행이다. 그래도 조원, 팀원 분들이 포기하지 않는 분들이라 다행이라고 생각한다 1주일 반동안 화이팅해야지