使用Lift休息会话中的Lift Web会话

时间:2013-02-05 18:58:57

标签: scala lift

我有一个Lift Web应用程序,我想提供一个csv下载链接。 csv由电梯休息服务提供。

设置此没问题。然而;为了使其安全和平稳地工作,我需要使用已经建立的经过身份验证的Web会话。

这是我当前与其他休息服务的其他身份验证。 Web用户是否有任何角色可以放在下面的???中;还是我完全忽略了这一点?

LiftRules.authentication = HttpBasicAuthentication("lift") {
  case (`webshopUser`, `webshopPwd`, _) =>
    userRoles(webshopRole :: Nil)
    true
  case (`mailingListUser`, `mailingListPwd`, _) =>
    userRoles(mailingListRole :: Nil)
    true
}

LiftRules.httpAuthProtectedResource.append {
  case Req("rest" :: "mailingLists" :: _, _, _) => Full(mailingListRole)
  case Req("rest" :: "mamberships" :: "year" :: _, _, _) => ???
  case Req("rest" :: "memberships" :: _, _, _) => Full(webshopRole)
}

1 个答案:

答案 0 :(得分:0)

该角色只是一个允许您控制对资源的访问权限的任意权限。在您的应用程序的某个位置,您已将webshopRolemailingListRole定义为实现net.liftweb.http.auth.Role的变量。为了保护第二个请求,您需要决定是否:

  1. 您只想授予对两个用户帐户之一的访问权限。 然后,假设您要允许允许定义的帐户 webshopUser。在这种情况下,您将使用Full(webshopRole)

  2. 您希望两个用户都有权访问。在这种情况下,您将定义一个类似于webshopRole定义方式的新角色,对于此示例,我们将其称为csvRole。然后,您将该角色添加到HttpBasicAuthentication规则中,例如:userRoles(webshopRole :: csvRole :: Nil)。在映射中,您将使用:Full(csvRole)