diff --git a/src/main/java/com/example/demo/aop/aspect/SessionCheck.java b/src/main/java/com/example/demo/aop/aspect/SessionCheck.java new file mode 100644 index 0000000..4de313e --- /dev/null +++ b/src/main/java/com/example/demo/aop/aspect/SessionCheck.java @@ -0,0 +1,11 @@ +package com.example.demo.aop.aspect; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface SessionCheck { +} diff --git a/src/main/java/com/example/demo/aop/aspect/SessionCheckAspect.java b/src/main/java/com/example/demo/aop/aspect/SessionCheckAspect.java new file mode 100644 index 0000000..3043c98 --- /dev/null +++ b/src/main/java/com/example/demo/aop/aspect/SessionCheckAspect.java @@ -0,0 +1,41 @@ +package com.example.demo.aop.aspect; + + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.example.demo.exception.NoSessionException; + + +@Aspect +@Component +public class SessionCheckAspect { + + HttpServletRequest request; + + @Autowired + public SessionCheckAspect(HttpServletRequest request) { + this.request = request; + } + + @Pointcut("@annotation(com.example.demo.aop.aspect.SessionCheck)") + public void sessionCheckMethod() { + } + + @Before("sessionCheckMethod()") + public void checkSession() { + HttpSession session = request.getSession(false); + + if (session == null || session.getAttribute("loginUser") == null) { + throw new NoSessionException("不正なログインです"); + } + + } + +}