我有一个Play
申请。可以使用URL http://localhost:9000/home
访问应用程序的主页。
我创建了一个注册按钮。注册后,该应用程序将创建一个URL并将该URL通过电子邮件发送给用户
电子邮件中的html
非常简单。
<a href=http://localhost:9000/ws/users/signup/ca67d0b4-8900-4672-a83d-e1eac1711333>Click here to verify email</a>
/signup/
之后的长号是令牌。
单击上面的链接时,将调用我的应用程序的verifyUser
操作,该操作在经过一些处理后要求客户端重定向到首页(如上所述)
def verifyUser(token:String) = Action.async{
implicit request => {
println("verifyUser action called with token: "+token) //TODOM - add proper handling and response
val tokenFutureOption:Future[Option[UserToken]] = userTokenRepo.find(UserTokenKey(UUID.fromString(token)))
for(tokenOption<- tokenFutureOption) yield {
tokenOption match {
case Some(userToken) =>{
println("finding user for token "+token)
val userOptionFuture = userRepo.findUser(userToken.loginInfo)
for(userOption <- userOptionFuture) yield {
userOption match {
case Some(user) =>{
println("found user "+user + "for token "+token)
val newInternalProfile = user.profile.internalProfileDetails.get.copy(confirmed=true)
println("old internal profile: "+user.profile.internalProfileDetails.get)
println("new internal profile: "+newInternalProfile)
val newProfile = UserProfile(Some(newInternalProfile),user.profile.externalProfileDetails)
println("old profile: "+user.profile)
println("new profile: "+newProfile)
val confirmedUser = user.copy(profile=newProfile)
val userOptionFuture :Future[Option[User]] = userRepo.updateUser(confirmedUser)
for(userOption <- userOptionFuture) yield {
userTokenRepo.remove(UserTokenKey(UUID.fromString(token)))
}
}
case None =>{
println("user doesn't exist for token "+userToken)
}
}
}
Redirect("localhost:9000/home")
}
case None =>{
Redirect("localhost:9000/home")
}
}
}
}
}
我在电子邮件中获得了URL,然后单击它,浏览器转到URL http://localhost:9000/ws/users/signup/ca67d0b4-8900-4672-a83d-e1eac1711333
,调用了verifyUser
Action
,但浏览器没有重定向到{{1 }}。看来浏览器正在向localhost:9000/home
发送请求,但没有收到服务器的响应,请参见下图。
我在做什么错了?