2014-03-13 27 views
2

我想實現deadbolt2組,但我很困惑我應該如何實現這一點。我正在使用Play 2.2.1,Deadbolt 2.2.RC4和Hibernate 4.3.1以及MySQL數據庫。玩框架 - 實現與deadbolt2組

我已經能夠實現一些Deadbolt :.我可以用@SubjectPresent登錄,註冊用戶和註釋方法我現在想用這個註釋我的函數:@Restrict(@Group("Administrator"))

我一直在使用Deadbolt2-java-example作爲指導,但有關組的部分對我來說似乎很模糊。

在模型AuthorisedUser我:

@ManyToMany 
public List<SecurityRole> roles; 

在我的數據庫這將創建一個名爲AuthorisedUser_SecurityRole表我的問題是,我不知道我應該如何查詢此表。輸入表名會給我一個運行時錯誤。 AuthorisedUser_SecurityRole is not mapped。這同樣適用,如果我鍵入roles

什麼,我想了解一下,然後是:

  1. 如何和我在哪裏建立新的羣體?
  2. 如何檢索/查詢列表roles(用戶所屬組的列表)
  3. 如何向用戶添加組?

請讓我知道你是否需要查看我的任何代碼,但我不確定你需要看到什麼,因爲大部分代碼都是deadbolt示例的標準代碼。

回答

1

角色

的角色,用戶握住應該可以從你的AuthorisedUser對象。 AuthorisedUser類必須實現be.objectify.deadbolt.core.models.Subject,並且getRoles()方法返回您的roles

如果您使用的是ORM(例如Hibernate),當您通過AuthorisedUser訪問時,roles將被填充。

提供給Group註釋中的字符串需要匹配的安全角色的名稱。

因此,你將有一個SecurityRole其方法返回「管理員」。所有管理員用戶都具有此角色。當用戶嘗試訪問您的受限方法時,Deadbolt會檢查該用戶持有的角色,並將Group中提供的名稱與該角色的名稱相匹配。

如果您在Group中有多個參數,例如, @Restrict(@Group("Foo", "Bar"))用戶必須同時擁有Foo和Bar角色。 Group的參數定義了AND關係。

要有OR關係,請使用多個組,例如, @Restrict(@Group("Foo"), @Group("Bar")) - 在這種情況下,用戶必須具有Foo或Bar角色。

+0

感謝您的回覆,我已經放棄了對此的希望。我仍然不確定如何將用戶添加到組中。我如何能夠插入'AuthorisedUser_SecurityRole'?還有一個完全集成的deadbolt示例在線我可以看一看嗎? – NoClueBlue

+0

評論中沒有足夠的空間來充分利用這一點,所以我會添加另一個答案。 –