我正在尝试实现deadbolt2组,但我很困惑我该如何实现这个目标。我使用的是Play 2.2.1、DeadBolt2.2.RC4和Hibernate 4.3.1和一个MySQL数据库。
我已经实现了一些死螺栓:。我可以使用@SubjectPresent登录、注册用户和注释方法--我现在想用以下内容来注释我的函数:@Restrict(@Group("Administrator"))。
我一直在使用Deadbolt2-java-示例作为指南,但在我看来,有关组的部分似乎不太清楚。
在模型AuthorisedUser中,我有:
@ManyToMany
public List<SecurityRole> roles;在我的数据库中,这创建了一个名为AuthorisedUser_SecurityRole的表,问题是我不知道该如何查询这个表。输入表名会给我一个运行时错误。AuthorisedUser_SecurityRole is not mapped。如果我键入roles,同样适用
我当时想知道的是:
roles (用户所属组的列表)如果您需要查看我的代码,请告诉我,但是我不确定您需要看到什么,因为大多数代码都是死栓示例中的标准代码。
发布于 2014-03-24 07:47:30
角色
用户持有的角色应该可以从您的AuthorisedUser对象中获得。AuthorisedUser类必须实现be.objectify.deadbolt.core.models.Subject,getRoles()方法返回roles。
如果您正在使用诸如Hibernate这样的ORM,那么当您通过roles访问它时,它将被填充。
群
提供给Group注释的字符串需要匹配安全角色的名称。
因此,您将有一个SecurityRole,它的getName()方法返回"Administrator“。所有管理员的用户都具有此角色。当用户试图访问受限方法时,Deadbolt将检查该用户所持有的角色,并将Group中提供的名称与角色的名称相匹配。
如果Group中有多个参数,例如@Restrict(@Group("Foo", "Bar")),用户必须同时具有Foo和Bar角色。Group的参数定义了一个和关系。
若要具有OR关系,请使用多个组,例如@Restrict(@Group("Foo"), @Group("Bar")) --在本例中,用户必须具有Foo或Bar角色。
https://stackoverflow.com/questions/22378080
复制相似问题