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를 세션에 저장하는 방법 포스팅 끝!
반응형