2013-02-05 11 views
0

나는 CSV 다운로드 링크를 제공하고자하는 리프트 웹 애플리케이션을 가지고 있습니다. CSV는 리프트 휴식 서비스에 의해 제공됩니다.리프트 휴식 세션에서 리프트 웹 세션 사용

설정에 문제가 없습니다. 하나; 이 작업을 안전하고 부드럽게 수행하려면 이미 설정된 인증 된 웹 세션을 사용해야합니다.

이것은 내 나머지 휴식 서비스의 현재 휴식 인증입니다. 내가 아래에 넣을 수있는 웹 사용자를위한 역할이 있습니까? 아니면 완전히 그 요점을 놓치고 있습니까?

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

역할은 사용자가 리소스에 대한 액세스를 제어 할 수있는 임의의 권한입니다. 응용 프로그램의 어느 곳에서 net.liftweb.http.auth.Role을 구현하는 변수로 webshopRolemailingListRole을 정의했습니다. 두 번째 요청을 보호하려면 다음을 결정해야합니다.

  1. 두 사용자 계정 중 하나에 대한 액세스 만 허용하려고합니다. 그런 다음 webshopUser에 정의 된 계정 허용을 허용한다고 가정 해 봅시다. 이 경우 Full(webshopRole)을 사용합니다.

  2. 두 사용자가 모두 액세스 할 수있게하려고합니다. 이 경우 webshopRole이 정의 된 것과 비슷한 새 역할을 정의하고이 예에서는 csvRole이라고합니다. 그런 다음 userRoles(webshopRole :: csvRole :: Nil)과 같이 HttpBasicAuthentication 규칙에 해당 역할을 추가합니다. 매핑에서 다음을 사용하십시오. Full(csvRole)

+0

글쎄, 실제로는 아니야. 미안 나는 더 명확하지 않았다. MegaProtoUser를 확장하는 Person 클래스가있는 웹 응용 프로그램 파트가 있습니다. 이것이 웹 인증 사용자의 기반입니다. 이미 로그인 한 사용자와 웹 세션을 사용하고 싶습니다. – thoredge

+0

사용자와 역할이 완전히 묶여 있지 않습니다. 사용자는 하나 이상의 역할을 가질 수 있으며 둘 이상의 사용자에게 역할을 할당 할 수 있습니다. 사용자는 개인을 식별하고 역할은 권한이있는 작업을 정의합니다. 귀하의 경우,'webshopUser'에 의해 식별 된 사용자에게는'webshopRole'의 단일 역할이 할당되고'/ rest/memberships'에 대한 액세스는 그 역할을 가진 사용자로 제한됩니다. 내가 원하는 것은 제한하려는 방식에 따라 기존 사용자에게 새로운 역할을 추가하거나 액세스 권한이 필요한 사용자 만 다시 사용할 수 있습니다. – jcern

+0

제 문제는 MegaProtoUser와 역할을 연관 지어 보았습니다. – thoredge