1

我想为我的电梯应用程序创建一个身份验证路由。

  1. 例如,创建一条路线www.myapp.com/user/login
  2. 我没有使用 Lift 表单/模板。表单以 JS 呈现。
  3. 发送带有电子邮件和密码的发布请求。
  4. 收到该 POST 请求时调用 Lift 身份验证。
  5. 使用该Users.login(email, password)方法来验证凭据。

问: 我如何告诉 Lift 对通过 传入的凭据进行身份验证/user/login

4

2 回答 2

1

我创建了一个快速工作示例,您可以在 github 上签出。它使用您提供的代码,所以希望它会非常简单。你可以看看这里:https ://github.com/jcern/lift_httpauth

但是,基本上要将代码添加到站点地图,您只需将以下内容添加到Boot.scala

Menu("Login Required") / "user" / "login"

并确保user/login.html您的 webapp 根目录中有一个。

于 2013-05-20T14:03:55.800 回答
1

这过于简单,但这样的事情将允许您创建一个可以发布到的 url。JSON 提取不是很安全,但应该让您了解它是如何工作的。

在 Boot.scala 中

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
      }
  }
})

在 User.scala 中

object User {
  object loggedIn extends SessionVar[Boolean](false)
}

然后你可以if(User.loggedIn.get){ ... }用来测试用户是否在任何地方登录。LiftRules.statelessDispatch如果您使用会话将不存在,这将适用于添加到有状态调度的任何内容。

于 2013-05-20T15:54:54.317 回答