首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play Framework -使用deadbolt2实现组

Play Framework -使用deadbolt2实现组
EN

Stack Overflow用户
提问于 2014-03-13 12:04:38
回答 1查看 612关注 0票数 2

我正在尝试实现deadbolt2组,但我很困惑我该如何实现这个目标。我使用的是Play 2.2.1、DeadBolt2.2.RC4和Hibernate 4.3.1和一个MySQL数据库。

我已经实现了一些死螺栓:。我可以使用@SubjectPresent登录、注册用户和注释方法--我现在想用以下内容来注释我的函数:@Restrict(@Group("Administrator"))

我一直在使用Deadbolt2-java-示例作为指南,但在我看来,有关组的部分似乎不太清楚。

在模型AuthorisedUser中,我有:

代码语言:javascript
复制
    @ManyToMany
public List<SecurityRole>   roles;

在我的数据库中,这创建了一个名为AuthorisedUser_SecurityRole的表,问题是我不知道该如何查询这个表。输入表名会给我一个运行时错误。AuthorisedUser_SecurityRole is not mapped。如果我键入roles,同样适用

我当时想知道的是:

  1. 我如何在哪里创建新的团队?
  2. 如何检索/查询列表roles (用户所属组的列表)
  3. 如何向用户添加组?

如果您需要查看我的代码,请告诉我,但是我不确定您需要看到什么,因为大多数代码都是死栓示例中的标准代码。

EN

回答 1

Stack Overflow用户

发布于 2014-03-24 07:47:30

角色

用户持有的角色应该可以从您的AuthorisedUser对象中获得。AuthorisedUser类必须实现be.objectify.deadbolt.core.models.SubjectgetRoles()方法返回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角色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22378080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档