2014-12-13 8 views
1

나는 앱을 개발 중이며 모든 것이 로컬로 잘 작동하고 있습니다. 하지만 PaaS (Jelastic 사용)로 밀어 넣으려고하면 (t2v/play2-auth) 사용중인 인증 모듈이 더 이상 작동하지 않는 것 같습니다. 나는 왜 그런지 전혀 모르고 몇 가지 설명을 원합니다. PaaS를 사용한 것은 처음이자 아직 모든 것을 얻지 못하고 있다고 생각합니다.로그인 페이지로 이동 play2 인증

자세한 내용은 : 로그인을 시도 할 때 로그인이 작동하는 것 같고/home으로 리디렉션되었지만 어떤 이유로 자동으로 로그인 페이지로 리디렉션됩니다. 사용자가 실제로 인증되지 않았기 때문에 의심됩니다. 왜 그런가요?

POST http://app/login [HTTP/1.1 303 See Other 3624ms] 
GET http://app/home [HTTP/1.1 303 See Other 53ms] 
GET http://app/login [HTTP/1.1 200 OK 107ms] 

미리 감사드립니다.

편집 :

type Id = Long 
type User = AccessUser 
type Authority = Int 
val idTag: ClassTag[Id] = classTag[Id] 
val sessionTimeoutInSeconds: Int = 3600 

def resolveUser(id: Id)(implicit ctx: ExecutionContext): Future[Option[User]] = Future(AccessProvider.find(id)) 

def goHome: Future[Result] = Future(Redirect(controllers.users.routes.UserSpaceController.home(0))) 

def loginSucceeded(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = { 
val uri = request.session.get("access_uri").getOrElse(controllers.users.routes.UserSpaceController.home(0).url.toString) 
Future.successful(Redirect(uri).withSession(request.session - "access_uri")) 
} 

def logoutSucceeded(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = 
Future.successful(Redirect(controllers.routes.PublicController.index)) 

def authenticationFailed(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = 
Future.successful(Redirect(controllers.users.routes.SecurityController.login).withSession("access_uri" -> request.uri)) 

def authorizationFailed(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = 
Future.successful(Forbidden("no permission")) 

def authorize(user: User, authority: Authority)(implicit ctx: ExecutionContext): Future[Boolean] = Future.successful { 
(user.permission, authority) match { 
    some cases 
} 
} 
override lazy val cookieSecureOption: Boolean = play.api.Play.isProd(play.api.Play.current) 
+0

소리가 캐싱 문제와 같습니다. ehcache를 사용하고 있습니까? 여러 인스턴스를 실행 중입니까? 'AuthConfig' 특성은 어떻게 생겼습니까? –

+0

@ m-z 답변을 보내 주셔서 감사합니다. 아니요, ehcache를 사용하고 있지 않습니다 (또는 적어도 캐싱을 위해 특별한 설정을하지 않았습니다). AuthConf로 원래 게시물을 편집했습니다. 도움을 주셔서 감사합니다 –

+3

두 가지. 하나는 캐시에 대해 아무 것도 설정하지 않은 경우, 아마도 기본 ehcache 구현을 사용하고있는 것입니다 (분산 환경에서 오류가 발생합니다). 또 다른 사실은 프로덕션 환경에서 'cookieSecureOption'을 true로 설정했지만 URL은 http 만 사용하고 있다는 것입니다. https와'cookieSecureOption = true'를 사용하지 않으면 쿠키가 삭제됩니다. 이는 문제가 될 수 있습니다. –

답변

1

@ m-z 덕분에 문제를 해결할 수있었습니다. 해결책은 실제로 cookieSecureOption=true입니다.

실제로 캐시가 나중에 문제가 될 수 있습니다. 하지만 지금은 효과가 있습니다. 명확히 해 주셔서 감사합니다.

0

문제의 근본 원인은 응용 프로그램이 올바르게 구성되지 않는 것입니다 날 것으로 보인다 : 여기 내있는 authconfig 특징이다. 어쩌면 다음 문서를 사용하여 응용 프로그램을 다시 설치해야합니다. http://blog.jelastic.com/2013/07/02/play-2-web-application-deployment-tutorial/ 이 정보가 도움이되지 않으면 호스팅 제공 업체의 지원 담당자에게 문의하십시오.