Spring/Security

Spring Security (4) : session 값 저장

evolutioning 2025. 1. 16. 16:36

먼저 Session이란

클라이언트별로 서버에 유지되는 저장공간이다.

 

*작성자는 소스를 작성할때 사용자를 식별할때 주로 사용한다.*

 

이전 포스팅에서 게시판목록을 조회할 때

Service단에서

fun adminBoardSelectList(param : SearchModel) : JSONObject {
    val jsono = JSONObject()

    try {
        val listdata = mapper.adminBoardSelectList(param, session.getAttribute("userid").toString())

        jsono["RESULT"] = "OK"
        jsono["LIST"] = listdata
        jsono["MESSAGE"] = "조회에 성공하였습니다."
    } catch (e : Exception) {
        logger.error("ERROR : " + e)
        jsono["RESULT"] = "ERROR"
        jsono["MESSAGE"] = "조회에 실패했습니다."
    }
    return jsono
}

 

session.getAttribute("userid).toString()을 작성했다.

따로 사용자 화면에서 userid를 파라미터로 보내지않고,

Spring Security에서 로그인 성공 시 userid값을 세션에 저장하도록 했고

세션에 저장된 userid값을 사용하도록 작성했다.

 

지난 Spring Security 포스팅에서는 세션에 값을 저장하는 코드가 없었기에 추가로 작성한다.

 

1. SuccessHandler

@Component
class EkeprlSuccessHandler : AuthenticationSuccessHandler {
    override fun onAuthenticationSuccess(
        request: HttpServletRequest?,
        response: HttpServletResponse?,
        authentication: Authentication?
    ) {
        val flashMap = FlashMap()
        val redirectUrl = "/main"
        val userid = authentication?.name

        val logger = LoggerFactory.getLogger(this::class.java)
        logger.info("CustomSuccessHandler")
        flashMap["MESSAGE"] = "성공적으로 로그인 되었습니다."

        request?.session?.setAttribute("userid", userid)

        val flashMapManager = SessionFlashMapManager()
        if (request != null && response != null) {
            flashMapManager.saveOutputFlashMap(flashMap, request, response)
        }
        response?.sendRedirect(redirectUrl)


    }
}

 

새롭게 추가한 부분은

request?.session?.setAttribute("userid", userid) 이다.

 

anthentication.name을 userid라는 변수로 지정했고,

해당 userid는 사용자가 로그인 시 입력한 id값이다.

 

request.session은 현재 요청에 대한 세션 객체를 갖고오는 것이다.

따라서 세션객체를 갖고와서, 사용자가 입력한 userid라는 키로 현재 로그인한 사용자의 userid 를 저장하는 방식이다.

 

이후 세션에 저장한 userid를

val listdata = mapper.adminBoardSelectList(param, session.getAttribute("userid").toString())

가져다 쓰는 형식으로 코드를 작성했다.

 

이상 Spring Security에 로그인 성공시

 =>사용자의 id를 세션에 저장하는 방법 포스팅 끝!

반응형