2013-02-05 49 views
0

我有一個電梯Web應用程序,我想提供一個csv下載鏈接。 csv由Lift rest服務提供。從電梯休息會話中使用電梯網絡會話

設置這個沒問題。然而;爲了使其安全且平滑地工作,我需要使用已建立的認證網絡會話。

這是我目前與其他休息服務的休息認證。是否存在我可以放在???下面的網絡用戶的任何角色;或者我完全錯過了這一點?

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

該角色只是一個任意權限,允許您控制對資源的訪問。在您的應用程序某處,您已將webshopRolemailingListRole定義爲實現net.liftweb.http.auth.Role的變量。爲了保護第二個請求,您需要決定是否:

  1. 您只想授予對兩個用戶帳戶之一的訪問權限。 然後,假設您想允許允許由 webshopUser定義的帳戶。在這種情況下,您將使用Full(webshopRole)

  2. 您希望兩個用戶都有權訪問。在這種情況下,您可以定義一個類似於webshopRole的新角色,對於此示例 - 我們將其稱爲csvRole。然後,您將該角色添加到HttpBasicAuthentication規則中,如:userRoles(webshopRole :: csvRole :: Nil)。在映射中,您可以使用:Full(csvRole)

+0

呃,實際上都沒有。對不起,我不是更清楚。我有一個帶有擴展MegaProtoUser的Person類的Web應用程序部分。這是Web認證用戶的基礎。我想要使​​用那些已經登錄的用戶和網絡會話。 – thoredge

+0

用戶和角色沒有完全綁定在一起。用戶可以擁有一個或多個角色,角色可以分配給多個用戶。用戶標識個人,角色定義他們有權執行的操作。在你的情況下,由'webshopUser'標識的用戶被分配了一個'webshopRole'角色,並且對'/ rest/memberships'的訪問僅限於具有該角色的用戶。我得到的是取決於你想限制的方式,你可以爲現有用戶添加一個新角色 - 或者,如果你只需要該用戶有權訪問,你可以重新使用一個角色。 – jcern

+0

我的問題是,我現在看到我們將MegaProtoUser與角色關聯起來。 – thoredge