From d308f14df4be2d3008e934db920ee0d64f121265 Mon Sep 17 00:00:00 2001 From: s-choi Date: Fri, 18 Sep 2026 15:51:48 +0900 Subject: [PATCH] =?UTF-8?q?[ADD]=20=E3=82=BB=E3=83=83=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=83=81=E3=82=A7=E3=83=83=E3=82=AFAOP=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/aop/aspect/SessionCheck.java | 11 +++++ .../demo/aop/aspect/SessionCheckAspect.java | 41 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/main/java/com/example/demo/aop/aspect/SessionCheck.java create mode 100644 src/main/java/com/example/demo/aop/aspect/SessionCheckAspect.java 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("不正なログインです"); + } + + } + +}