代码之家  ›  专栏  ›  技术社区  ›  Simon

为什么使用grails的acegi插件注册新用户会给出“找不到默认角色”错误

  •  1
  • Simon  · 技术社区  · 16 年前

    也许换一种方式,我如何使用teh-acegi插件为grails中新注册的用户设置默认的安全角色?

    我已经学习了acegi/grails教程 here 并且正在使用控制器注释-尽管我还没有保护任何东西。

    我添加了第二个名为“Web用户”的角色,并已成功将用户添加到该角色。

    然而,当我为另一个新用户使用寄存器控制器时,我从Grails得到一条错误消息 "Default role not found" .

    我可以看到如何通过在适当的create方法中处理一个空的角色列表,或者甚至在注册视图中将一个默认的角色名称作为一个隐藏字段重新发布,从而大致摆脱这种情况,但它们感觉不到颗粒。

    我认为我应该能够在用户域类本身或者在用户和角色表之间的数据库关系中定义它。

    定义默认角色的目的是什么,以及我为什么收到这个消息。

    哦,那你怎么发音阿奇?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Burt Beckwith    16 年前

    这是一个文档问题。注册页不允许您选择角色,因为它应该是一个公共注册页。创建用户时至少需要一个角色,因此需要为此工作流配置“默认”角色。

    可以使用“defaultRole”属性在securityconfig.groovy中设置默认角色。默认情况下,它是“角色用户”,但可以是您想要的任何内容。在用户注册之前,必须有一个具有此值的授权实例。

    发音在常见问题解答中- http://www.acegisecurity.org/faq.html

        2
  •  0
  •   Simon    16 年前

    我找到了答案。对于Grails,通常有一个名为role_user的默认角色。注册新用户时,它会查找具有该名称的角色,如果找到该角色,则会将其分配给该用户。

    消息“找不到默认角色”在读取方式上不明确。

    我首先认为这意味着“您需要在某个地方定义一个默认角色,以便新注册的用户被分配给它”。

    不过,我认为这实际上意味着“您需要在您的角色表中创建数据库行,该表称为角色\用户,以便正常配置工作”。

    让我吃惊的是,安全特性的Grails生成的一部分应该只是在数据库引导中添加一个角色“admin”和“role”用户,并且已经处理了错误的可能性。

    推荐文章