我想为我的电梯应用程序创建一个身份验证路由。
- 例如,创建一条路线
www.myapp.com/user/login
- 我没有使用 Lift 表单/模板。表单以 JS 呈现。
- 发送带有电子邮件和密码的发布请求。
- 收到该 POST 请求时调用 Lift 身份验证。
- 使用该
Users.login(email, password)
方法来验证凭据。
问:
我如何告诉 Lift 对通过 传入的凭据进行身份验证/user/login
?
我创建了一个快速工作示例,您可以在 github 上签出。它使用您提供的代码,所以希望它会非常简单。你可以看看这里:https ://github.com/jcern/lift_httpauth
但是,基本上要将代码添加到站点地图,您只需将以下内容添加到Boot.scala
:
Menu("Login Required") / "user" / "login"
并确保user/login.html
您的 webapp 根目录中有一个。
这过于简单,但这样的事情将允许您创建一个可以发布到的 url。JSON 提取不是很安全,但应该让您了解它是如何工作的。
LiftRules.dispatch.append(new RestHelper{
serve {
case JsonPost("user" :: "login" :: Nil, (json, _)) =>
//extract JSON from json object to get username and password
val userEmail:String = (json \ "username").extract[String]
val password = (json \ "password").extract[String]
User.login(userEmail, password) match {
case Full(r) =>
User.current(true)
InMemoryResponse(Array(), Nil, Nil, 200)
case _ => ForbiddenResponse
}
}
})
object User {
object loggedIn extends SessionVar[Boolean](false)
}
然后你可以if(User.loggedIn.get){ ... }
用来测试用户是否在任何地方登录。LiftRules.statelessDispatch
如果您使用会话将不存在,这将适用于添加到有状态调度的任何内容。