login : session check(argument resolver)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package hello.login;
|
||||
|
||||
import hello.login.web.argumentresolver.LoginMemberArgumentResolver;
|
||||
import hello.login.web.filter.LogFilter;
|
||||
import hello.login.web.filter.LoginCheckFilter;
|
||||
import hello.login.web.interceptor.LogInterceptor;
|
||||
@@ -7,14 +8,21 @@ import hello.login.web.interceptor.LoginCheckInterceptor;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import java.util.List;
|
||||
|
||||
@Configuration
|
||||
public class WebConfig implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
|
||||
resolvers.add(new LoginMemberArgumentResolver());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new LogInterceptor())
|
||||
|
||||
@@ -2,6 +2,7 @@ package hello.login.web;
|
||||
|
||||
import hello.login.domain.member.Member;
|
||||
import hello.login.domain.member.MemberRepository;
|
||||
import hello.login.web.argumentresolver.Login;
|
||||
import hello.login.web.session.SessionManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -80,7 +81,7 @@ public class HomeController {
|
||||
}
|
||||
|
||||
// spring
|
||||
@GetMapping("/")
|
||||
// @GetMapping("/")
|
||||
public String homeLogin3Spring(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember,
|
||||
Model model) {
|
||||
|
||||
@@ -91,4 +92,15 @@ public class HomeController {
|
||||
model.addAttribute("member", loginMember);
|
||||
return "loginHome";
|
||||
}
|
||||
|
||||
@GetMapping("/")
|
||||
public String homeLogin3ArgumentResolver(@Login Member loginMember, Model model) {
|
||||
|
||||
if (loginMember == null) {
|
||||
return "home";
|
||||
}
|
||||
|
||||
model.addAttribute("member", loginMember);
|
||||
return "loginHome";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package hello.login.web.argumentresolver;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target(ElementType.PARAMETER)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Login {
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package hello.login.web.argumentresolver;
|
||||
|
||||
import hello.login.domain.member.Member;
|
||||
import hello.login.web.SessionConst;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.web.bind.support.WebDataBinderFactory;
|
||||
import org.springframework.web.context.request.NativeWebRequest;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
@Slf4j
|
||||
public class LoginMemberArgumentResolver implements HandlerMethodArgumentResolver {
|
||||
@Override
|
||||
public boolean supportsParameter(MethodParameter parameter) {
|
||||
log.info("supportsParameter 실행");
|
||||
|
||||
boolean hasLoginAnnotation = parameter.hasParameterAnnotation(Login.class);
|
||||
boolean hasMemberType = Member.class.isAssignableFrom(parameter.getParameterType());
|
||||
return hasLoginAnnotation && hasMemberType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
|
||||
log.info("resolveArgument 실행");
|
||||
|
||||
HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return session.getAttribute(SessionConst.LOGIN_MEMBER);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user