我有一个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)
}
答案 0 :(得分:0)
该角色只是一个允许您控制对资源的访问权限的任意权限。在您的应用程序的某个位置,您已将webshopRole
和mailingListRole
定义为实现net.liftweb.http.auth.Role
的变量。为了保护第二个请求,您需要决定是否:
您只想授予对两个用户帐户之一的访问权限。
然后,假设您要允许允许定义的帐户
webshopUser
。在这种情况下,您将使用Full(webshopRole)
。
您希望两个用户都有权访问。在这种情况下,您将定义一个类似于webshopRole
定义方式的新角色,对于此示例,我们将其称为csvRole
。然后,您将该角色添加到HttpBasicAuthentication
规则中,例如:userRoles(webshopRole :: csvRole :: Nil)
。在映射中,您将使用:Full(csvRole)