SignController
회원가입 SignUpRequestDto에는 nickname, password, name이 들어간다.
서비스에서 pw는 encode해서 user로 들어가고 repo에 저장된다.
admin과 user 권한을 저장하는 user_roles를 enum이 아닌 collections로 준 이유는
enum은 이후에 권한을 추가할 때 수동 설정으로 바꿔야 하는데
collection에서는 service에서 해당 권한이 무엇인지 정의만 해주면 되기 때문에
enum대신 collection으로 작성했다.
로그인
SignInRequestDto에는 nickname, password가 들어간다.
HttpServletResponse는 쿠키를 생성하기 위해서 작성된다.
쿠키는 서버에서 생성해서 front에서 저장된다.
이렇게 되면 기존에 webstorage로 설정한 nickname은 필요없어진다.
SignInResultDto signInResultDto = SignInResultDto.builder()
.role_check(authority)
.token(jwtTokenProvider.createToken(user.getNickname(), user.getRoles()))
.build();
token을 설정하는 코드다.
SecurityConfiguration
WHITE_LIST 제거
public static final String[] WHITE_LIST = {
"/sign-api/sign-in",
"/sign-api/sign-up",
"/sign-api/exception",
"**exception**"
};
아래 코드 2줄 제거
.antMatchers(WHITE_LIST).permitAll() // 권한 허용 URL 설정
.anyRequest().hasRole("ADMIN") // 기타 요청은 인증 권한을 가진 사용자에게 허용
WHITE_LIST는 권한 없이 접근이 가능한데 WHITE_LIST에 설정 된 것은 모두 허용되고 그 외는 ADMIN만 가능하기 때문에 WHITE_LIST에 적히지 않은 부분은 접근이 불가능했다.
.anyRequest().hasRole("ADMIN") 설정을 없애면 접근 설정이 되어있지 않은 모든 url을 허용하게 되고
현재 사용하고 있는 url외의 접근들은 403이나 404 에러처리가 되어버리기 때문에
따로 설정할 필요가 없다. 그러므로 주석처리를 하게 되었다.
기존 코드로 활용(ADMIN 권한을 USER 권한과 동일하게 설정)
.antMatchers(USER_ENABLE).hasAnyRole("USER","ADMIN") // USER 접근 가능
권한이 있는 사용자만 접근이 가능하다. 이 말은 즉 로그인을 해야 접근이 가능하다.
403 FORBIDDEN : TOKEN 유효X
405 허용되지 않은 메소드로 접근
ex) POST 방식인데 GET으로 보냈을 때 ENDPOINT(POST, GET, PUT, DELETE) 설정 문제
VIEW PAGE, MVC 모델에서 사용되는 URL을 작성했다.
public static final String[] VIEW_LIST = {
"/static/**",
"/js/**",
"/favicon.ico/**",
"/user/**",
"/taste",
"/tenSeconds",
"/adme",
"/"
};
VIEW_LIST를 작성하지 않았다면 아래 코드에 VIEW_LIST 대신 위에 적힌 값을 일일히 코드를 작성해야하기 때문에 상수로 작성했다.
.antMatchers(VIEW_LIST).permitAll()
'TIL' 카테고리의 다른 글
socket 채팅방 (0) | 2023.01.23 |
---|---|
프로젝트 요약 (0) | 2023.01.16 |
현 프로젝트 진행상황 (0) | 2023.01.01 |
Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ (0) | 2022.12.29 |
채팅 재연결 (0) | 2022.12.28 |