스부3장2회차

황선영·2023년 10월 27일
0

테스트코드작성하는거 뭔기능인지모르겟음

Page findAll(Pageable pageable); 이게뭘까

페이징 잘 이해가 안감.

페이지 객체엔 다음과 같은 속성이 있다.

paging.isEmpty : 페이지 존재여부. 게시물있으면 false,아니면 true
paging.totalElements : 전체 게시물 개수
paging.totalPages 전체 페이지 개수
paging.size 페이지당 보여줄 게시물 개수
paging.number 현재 페이지 번호
paging.hasPrevious 이전 페이지 존재 여부
paging.hasNext 다음 페이지 존재 여부


스프링 시큐리티 : 스프링기반 앱의 인증,권한 담당 스프링 하위 프레임워크

인증과인가

  • 인증 authenticate : 사용자의 신원을 확인하는 절차
  • 인가 authorization : 사용자의 권한을 확인하고 허가하는 절차.
    인가는 인증절차를 거친 후에 진행된다.

http통신은 stateless이기때문에 이전요청을 기억하지 못함
-> url로 요청할때 클라이언트 정보를 길게 담아서 보낸다?그럼 알아보긴하겠지만
단점이 많음.

====================================

스프링 시큐리티,.,. 로그인기능,.

build.gradle에 머 추가햇더니 로그인창 바로 뜸.->로그인 해야 접근가능하도록 하는거같음.

로그인 안해도 페이지 조회는 가능하도록

SecurityConfig.java 추가함 -> 위에 애너테이션 추가
1. @Configuration : 스프링의 환경설정 파일임을 의미. 여기선 스프링시큐리티 설정위해 사용.

  1. @EnableWebSecurity : 모든 요청 url이 스프링시큐리티의 제어를 받도록 만드는.
    내부적으로 SpringSecurityFilterChain이 동작하여 url필터가 적용됨

스프링 시큐리티의 세부설정은 SecurityFilterChain 빈을 생성하여 설정할수 있음

@Column(unique=true)
private String username;
-> username이란 속성엔 유일한 값만 저장 가능. 즉, 값을 중복되게 저장하지 못하도록 애너테이션 적용.


여기서 사용자 비밀번호 암호화 -> 시큐리티의 BCryptPasswordEncoder 클래스를 사용하여 암호화하여 비밀번호를 저장했다(BCryptPasswordEncoder는 BCrypt 해싱 함수(BCrypt hashing function)를 사용해서 비밀번호를 암호화한다, PasswordEncoder는 BCryptPasswordEncoder의 인터페이스이다)

  • 하지만 new로 직접 생성하는것보단 빈으로 등록해서 사용해야함
  • 암호화방식변경하면 일일이 다 찾아 수정해야하니까,.

    첨부터 시큐리티 설정 담당하는 SecurityConfig가서 재설정하면댐.


로그인

  1. 스프링 시큐리티에 로그인url등록
    SecurityConfig에 추가

  2. usercontroller에 로그인 매핑 추가

  3. 템플릿추가..

  4. UserRepository에 사용자 조회 메소드추가

  5. 시큐리티는 인증이후에 권한도 관리함. 사용자에게 부여할 권한 필요. ADMIN, USER 2개의 권한을 갖는 UserRole을 신규로 작성

    enum 상수의모음 ㅣ일정ㅇ종의클래스.,
    바뀌면안되는애들 인데 같은카테고리애들 모으는용도

    ADMIN : 주로 시스템관리권한을 가진 사용자를 나타낸다..일단변수명이고, 역할지정해준거임,.

  6. 스프링 시큐리티 설정에 등록할 usersecuritysevice 신규작성. 스프링시큐리티가 제공하는 UserDetailsService인터페이스 구현할 클래스? 임.
    UserDetailsService는 loadUserByusername메서드를 구현하도록 강제하는 인터페이스 이다. 사용자명으로 비번 조회하여 리턴하는 메서드임.
    저 메서드는 사용자명으로 SiteUser객체를 조회하고, 만약 사용자명에 해당하느 ㄴ데이터 없으면 UsernameNotFoundException 오류를 내게 했다
    사용자명이 admin이면 ADMIN 권한부여 ->userrole로?
    그리고 사용자명, 비밀번호, 권한을 입력으로 스프링 시큐리티의 User 객체를 생성하여 리턴했다. 스프링 시큐리티는 loadUserByUsername 메서드에 의해 리턴된 User 객체의 비밀번호가 화면으로부터 입력 받은 비밀번호와 일치하는지를 검사하는 로직을 내부적으로 가지고 있다.

  7. 스프링시큐리티에 AuthenticationManager 빈 생성->securityconfig클래스에다가함

  8. 담에 템플릿 수정하고

  9. 이어서 링크수정?


1031

스프링시큐리티에 로그인url등록?
-> 웹애플리케이션에서 사용자가 로그인 시도할때 사용될 url지정하는걸 의미.

springsecurity 는 spring기반의 웹어플리케이션에서 보안을 구현할 수 있게 해주는 강력한 보안 프레임워크.

스프링시큐리티가 제공하는 principal r객체란? -> 현재 인증된 사용자의 정보를 나타내는 객체. 사용자의 식별정보, 권한 등을 포함.
Authentication객체 안에 들어있음. principal객체는 로그인을 해야만 생성되는 객체이다.

검색기능 추가 -> jpa가 제공하는 specification인터페이스 사용. : 정교한 쿼리작성도와주는 jpa도구.

업로드중..

profile
개발필기노트

0개의 댓글