maven 의존성 추가해준다 .
Hateoas(해당되는 주소를 웹에서 보여준다.)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
●UserController
@PostMapping()
public EntityModel<User> addUser (@RequestBody @Valid UserDto userDto){
userDto.setWdate(LocalDateTime.now());
ModelMapper modelMapper = new ModelMapper();
User user = modelMapper.map(userDto,User.class);
User dbuser = userService.regist(user);
EntityModel<User> entityModel = EntityModel.of(dbuser);
entityModel.add(
WebMvcLinkBuilder.linkTo(UserController.class)
.slash(dbuser.getId())
.withSelfRel()
);
return entityModel;
}
EntityModel 로 만들어준다.
이러면 POST 방식으로 아디를 만들어주면 그 주소를 같이 나오게 된다.

사진 처럼 주소가 나오게 된다.
intercepter 와 기능은 똑같다.
일반 회원인지 주인인지 로그인을 했을 때 수정권한이 다르다.
그걸 해보겠다.
Security maven 의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Security 는 모든 연결을 우선 막고 아이디와 비번을 쳤을 때 풀린다 .
우선 intercepter 로 해보겠다.(쓰는이유는 로그인을 했을 때 다른 사람의 정보를 보여서는 안되고, 해당되는 이메일과 비밀번호가 없을때는 로그인이 되면안되기 때문이다.)

package 형식은 이렇게 만들었습니다.
●LoginIntercepter
package com.mh.restapi03.login;
import com.mh.restapi03.exception.ErrorCode;
import com.mh.restapi03.exception.UserException;
import com.mh.restapi03.users.User;
import com.mh.restapi03.users.UserRepository;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
@Component
@RequiredArgsConstructor
public class LoginIntercepter implements HandlerInterceptor {
private final UserRepository userRepository;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("일로오나");
String password = request.getHeader("password");
String email = request.getHeader("email");
System.out.println(password);
System.out.println(email);
User dbUser = userRepository.findByEmailAndPassword(email,password);
if (dbUser == null){
throw new UserException(ErrorCode.LOGFAIL);
}
return true;
}
}
오버로딩으로 password와 email을 얻어온다.
email,password를 dbuser 에 담아서
공간이 널 이면
오류문을 출력해라
●CorsInterceptorConfig
package com.mh.restapi03.conf;
import com.mh.restapi03.login.LoginIntercepter;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@RequiredArgsConstructor
public class CorsInterceptorConfig implements WebMvcConfigurer {
private final LoginIntercepter loginIntercepter;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginIntercepter)
.excludePathPatterns("/join","/login")
.addPathPatterns("/**");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedHeaders("*")
.allowedMethods("*");
}
}
오버로딩으로 addIntercepter 만들어준다.
excludePathPatterns 에 join와 login은 예외로 평소처럼 다 보이게 한다.
모든 클래스를 담아라
'spring' 카테고리의 다른 글
스프링 시큐리티 동적 작용 (0) | 2025.02.06 |
---|---|
tosspayment api 사용해보기 (0) | 2024.04.18 |
맥북에서 DBeaver spring 으로 연결 (0) | 2024.03.01 |
spring pom.xml (0) | 2024.02.28 |
spring 등록 출력(복습) (0) | 2024.02.27 |