관리 메뉴

HAMA 블로그

[Play2] Cookie 와 Session 본문

PlayFramework2

[Play2] Cookie 와 Session

[하마] 이승현 (wowlsh93@gmail.com) 2016. 9. 29. 19:47

Cookie 


생성하기 

def login (id : String, pwd : String) = Action {
Ok("success").withCookies( Cookie("coki_name", id))
} 

Result 객체의 메소드인 withCookies 를 호출하여 내부 인자로 쿠키를 등록 할 수 있습니다.
위에 "identify" 는 name 이고 , id 는 value 입니다.


가져오기

def authnticate (request: Request[AnyContent]) : Boolean = {

val ck : Option[Cookie] = request.cookies.get("coki_name")

Request 에 있는 cookies 로 부터 특정 이름을 가진 쿠키를 get 합니다. 리턴은 Option 으로 받는 군요. 


삭제하기

def logout () = Action { request =>
Ok("logout success").discardingCookies(DiscardingCookie("coki_name"))
}

Result 객체의 메소드인 discardingCookies 를 호출하여 삭제합니다.  지우고 싶은 쿠키 name 을 넣어주네요.


Cookie 클래스 살펴보기

마지막으로 Cookie 클래스 원본입니다. name 과 value 말고도 넣을 수 있는 인자는 많죠.

/**
* An HTTP cookie.
*
* @param name the cookie name
* @param value the cookie value
* @param maxAge the cookie expiration date in seconds, `None` for a transient cookie, * or a value less than 0 to expire a cookie now
* @param path the cookie path, defaulting to the root path `/`
* @param domain the cookie domain
* @param secure whether this cookie is secured, sent only for HTTPS requests
* @param httpOnly whether this cookie is HTTP only, i.e. not accessible from * client-side JavaScipt code
*/
case class Cookie(name: String, value: String, maxAge: Option[Int] = None,                   path: String = "/", domain: Option[String] = None,                  secure: Boolean = false, httpOnly: Boolean = true)


Session

생성하기 

def login (id : String, pwd : String) = Action {
Ok("success").withSession("session key"-> "value")

} 

Result 객체의 메소드인 withSession 을 호출하여 맵 형태의 세션을 등록합니다.
인자는 session 클래스 또는 위처럼 session key 는 키이고 "value" 는 값인 tuple 이 들어갑니다.

request.session.+()
request.session.-()

+ , - 를 통해 추가 삭제 할 수 있습니다.


가져오기

def authnticate (request: Request[AnyContent]) : Boolean = {

val se : Option[String] = request.session.get("session key")

Request 에 있는 session 이 가진 특정 키에 대한 값을 리턴 받습니다. 리턴은 Option[String] 으로 받는군요. 


삭제하기

def logout () = Action { request =>
Ok("logout success").withNewSession

}

Result 객체의 메소드인 withNewSession 을 호출하여 삭제합니다. 



Comments