首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电梯认证

电梯认证
EN

Stack Overflow用户
提问于 2013-05-19 22:25:21
回答 2查看 949关注 0票数 1

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

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

Q:如何告诉Lift认证通过/user/login传入的凭据

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-20 15:54:54

这是过于简单,但类似的东西将允许您创建一个url,您可以张贴到。JSON提取不是很安全,但是应该让您了解这是如何工作的。

在Boot.scala中

代码语言:javascript
复制
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中

代码语言:javascript
复制
object User {
  object loggedIn extends SessionVar[Boolean](false)
}

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

票数 1
EN

Stack Overflow用户

发布于 2013-05-20 14:03:55

我创建了一个快速的工作示例,您可以查看github。它使用了您提供的代码,因此希望它非常简单。你可以在这里看看:httpauth

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

代码语言:javascript
复制
Menu("Login Required") / "user" / "login"

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16640124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档