스프링 시큐리티에서 세션과 인증 정보 없애는 방법..

톰캣 세션 정보를 REDIS를 통해 공유하다보니, 시큐리티에서 세션이 없어지질 않아서... (꼼수일 수 있음)


 

// 현재 세션 얻어와서 없애고

HttpSession session = request.getSession(false);   

session.invalidate();

// 시큐리티 인증정보 없애기

SecurityContextHolder.getContext().setAuthentication(null);


참고: https://gist.github.com/kdonald/2232095


스프링에서 CORS 문제를 해결하기 위해 해당 Class를 하나 작성한다.


 

package com.xxxx.core.filter;


import java.io.IOException;


import javax.servlet.FilterChain;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.springframework.web.filter.OncePerRequestFilter;


public class CorsFilter extends OncePerRequestFilter {


    @Override

    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)

            throws ServletException, IOException {

        response.addHeader("Access-Control-Allow-Origin", "*");

        if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())); {

            // CORS "pre-flight" request

            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");

            response.addHeader("Access-Control-Allow-Headers", "Authorization");

            response.addHeader("Access-Control-Max-Age", "1728000");

        }

        filterChain.doFilter(request, response);

    }


}



web.xml 에 아래 필터 추가


    <!-- CORS -->

    <filter>

        <filter-name>cors</filter-name>

        <filter-class>com.xxxx.core.filter.CorsFilter</filter-class>

    </filter>


    <filter-mapping>

        <filter-name>cors</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>


+ Recent posts