login : session check(argument resolver)
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package hello.login;
|
package hello.login;
|
||||||
|
|
||||||
|
import hello.login.web.argumentresolver.LoginMemberArgumentResolver;
|
||||||
import hello.login.web.filter.LogFilter;
|
import hello.login.web.filter.LogFilter;
|
||||||
import hello.login.web.filter.LoginCheckFilter;
|
import hello.login.web.filter.LoginCheckFilter;
|
||||||
import hello.login.web.interceptor.LogInterceptor;
|
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.boot.web.servlet.FilterRegistrationBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
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.InterceptorRegistry;
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
import javax.servlet.Filter;
|
import javax.servlet.Filter;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class WebConfig implements WebMvcConfigurer {
|
public class WebConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
|
||||||
|
resolvers.add(new LoginMemberArgumentResolver());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInterceptors(InterceptorRegistry registry) {
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
registry.addInterceptor(new LogInterceptor())
|
registry.addInterceptor(new LogInterceptor())
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package hello.login.web;
|
|||||||
|
|
||||||
import hello.login.domain.member.Member;
|
import hello.login.domain.member.Member;
|
||||||
import hello.login.domain.member.MemberRepository;
|
import hello.login.domain.member.MemberRepository;
|
||||||
|
import hello.login.web.argumentresolver.Login;
|
||||||
import hello.login.web.session.SessionManager;
|
import hello.login.web.session.SessionManager;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -80,7 +81,7 @@ public class HomeController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// spring
|
// spring
|
||||||
@GetMapping("/")
|
// @GetMapping("/")
|
||||||
public String homeLogin3Spring(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember,
|
public String homeLogin3Spring(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember,
|
||||||
Model model) {
|
Model model) {
|
||||||
|
|
||||||
@@ -91,4 +92,15 @@ public class HomeController {
|
|||||||
model.addAttribute("member", loginMember);
|
model.addAttribute("member", loginMember);
|
||||||
return "loginHome";
|
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