Java Tokenintercepter를 사용하여 Session 확인
11943 단어 자바spring-boot
TokenInterceptor란?
컨트롤러 실행 전후에 처리 추가
사용환경
자바
Springboot
SpringToolSweet4
구현 방법
· 프로젝트 구조
다음 파일 만들기
TokenInterceptor.javapackage com.example.demo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
// HandlerInterceptorAdapterを継承
@SuppressWarnings("deprecation")
public class TokenInterceptor extends HandlerInterceptorAdapter {
@Autowired
HttpSession session;
// ①コントローラメソッドの実行前に呼ばれる
@Override
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
//セッション取得
String sessiondata;
sessiondata = request.getSession().getId();
//セッション有効時間取得
int intervalTime = session.getMaxInactiveInterval();
//セッション保存データ取得
String user = (String) session.getAttribute("sessiondata");
System.out.println(sessiondata);
System.out.println(user);
System.out.println(intervalTime);
if(intervalTime==1800) {
session.setMaxInactiveInterval(180);
}
//Interceptorで全指定しているので、最初はnullになる為、nullの場合はスルーする
if(!(user==null)) {
if (!(sessiondata.equals(user))) {
throw new NotValidSessionException("セッションが切れました。再度ログインして下さい。");
}
}
System.out.println("preHandle");
return true;
}
// ②コントローラメソッドの実行後に呼ばれる
@Override
public void postHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
// ③リクエスト処理の完了後に呼ばれる
@Override
public void afterCompletion(
HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
아래에 설명된 경로 아래의 파일에 적용
spring-context.xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:*.properties" />
<!-- インターセプタの定義 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.demo.TokenInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
</beans>
@SpringBootApplication 가 붙은 클래스에 상기 XML을 읽어들일 수 있다
Demo24Application.javapackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@Configuration
@ImportResource("spring-context.xml")
public class Demo24Application {
public static void main(String[] args) {
SpringApplication.run(Demo24Application.class, args);
}
}
애플리케이션 시작 후 로그에 세션 정보가 출력되는지 확인
Reference
이 문제에 관하여(Java Tokenintercepter를 사용하여 Session 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gaku0202/items/aafc0523868735a82edd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자바
Springboot
SpringToolSweet4
구현 방법
· 프로젝트 구조
다음 파일 만들기
TokenInterceptor.javapackage com.example.demo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
// HandlerInterceptorAdapterを継承
@SuppressWarnings("deprecation")
public class TokenInterceptor extends HandlerInterceptorAdapter {
@Autowired
HttpSession session;
// ①コントローラメソッドの実行前に呼ばれる
@Override
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
//セッション取得
String sessiondata;
sessiondata = request.getSession().getId();
//セッション有効時間取得
int intervalTime = session.getMaxInactiveInterval();
//セッション保存データ取得
String user = (String) session.getAttribute("sessiondata");
System.out.println(sessiondata);
System.out.println(user);
System.out.println(intervalTime);
if(intervalTime==1800) {
session.setMaxInactiveInterval(180);
}
//Interceptorで全指定しているので、最初はnullになる為、nullの場合はスルーする
if(!(user==null)) {
if (!(sessiondata.equals(user))) {
throw new NotValidSessionException("セッションが切れました。再度ログインして下さい。");
}
}
System.out.println("preHandle");
return true;
}
// ②コントローラメソッドの実行後に呼ばれる
@Override
public void postHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
// ③リクエスト処理の完了後に呼ばれる
@Override
public void afterCompletion(
HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
아래에 설명된 경로 아래의 파일에 적용
spring-context.xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:*.properties" />
<!-- インターセプタの定義 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.demo.TokenInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
</beans>
@SpringBootApplication 가 붙은 클래스에 상기 XML을 읽어들일 수 있다
Demo24Application.javapackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@Configuration
@ImportResource("spring-context.xml")
public class Demo24Application {
public static void main(String[] args) {
SpringApplication.run(Demo24Application.class, args);
}
}
애플리케이션 시작 후 로그에 세션 정보가 출력되는지 확인
Reference
이 문제에 관하여(Java Tokenintercepter를 사용하여 Session 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gaku0202/items/aafc0523868735a82edd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package com.example.demo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
// HandlerInterceptorAdapterを継承
@SuppressWarnings("deprecation")
public class TokenInterceptor extends HandlerInterceptorAdapter {
@Autowired
HttpSession session;
// ①コントローラメソッドの実行前に呼ばれる
@Override
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
//セッション取得
String sessiondata;
sessiondata = request.getSession().getId();
//セッション有効時間取得
int intervalTime = session.getMaxInactiveInterval();
//セッション保存データ取得
String user = (String) session.getAttribute("sessiondata");
System.out.println(sessiondata);
System.out.println(user);
System.out.println(intervalTime);
if(intervalTime==1800) {
session.setMaxInactiveInterval(180);
}
//Interceptorで全指定しているので、最初はnullになる為、nullの場合はスルーする
if(!(user==null)) {
if (!(sessiondata.equals(user))) {
throw new NotValidSessionException("セッションが切れました。再度ログインして下さい。");
}
}
System.out.println("preHandle");
return true;
}
// ②コントローラメソッドの実行後に呼ばれる
@Override
public void postHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
// ③リクエスト処理の完了後に呼ばれる
@Override
public void afterCompletion(
HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:*.properties" />
<!-- インターセプタの定義 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.demo.TokenInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
</beans>
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@Configuration
@ImportResource("spring-context.xml")
public class Demo24Application {
public static void main(String[] args) {
SpringApplication.run(Demo24Application.class, args);
}
}
Reference
이 문제에 관하여(Java Tokenintercepter를 사용하여 Session 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gaku0202/items/aafc0523868735a82edd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)