2010-01-12 68 views
1

也許換一種方式,我該如何爲使用ACEGI插件的Grails中的新註冊用戶設置默認安全角色?爲什麼註冊使用ACEGI插件的新用戶GRAILS會給出「未找到默認角色」。錯誤

我跟着acegi/grails教程here,並使用控制器註釋 - 雖然我還沒有確保任何東西。

我添加了第二個角色,名爲WEB_USER,並已成功將用戶添加到該角色。

但是,當我使用註冊表控制器來回另一位新用戶時,我從Grails那裏收到一條錯誤消息,說"Default role not found"

我可以看到,我可以通過處理適當的create方法中的空角色列表,或者甚至在註冊視圖中將默認角色名稱作爲隱藏字段發佈回來,從而粗略地編寫出來,但他們覺得未Grails的。

我想我應該能夠在用戶域類本身或以某種方式定義用戶和角色表之間的數據庫關係。

定義默認角色的目的是什麼,以及爲什麼我會收到此消息。

哦,你怎麼發音acegi?

回答

2

這是一個文檔問題。註冊頁面不允許您選擇角色,因爲它預計會成爲公共註冊頁面。創建用戶時至少需要一個角色,因此它期望爲此工作流配置「默認」角色。

您可以使用'defaultRole'屬性在SecurityConfig.groovy中設置默認角色。默認情況下它是'ROLE_USER',但它可以是任何你想要的。在用戶可以註冊之前,必須有一個具有此值的Authority實例。

發音是在FAQ - http://www.acegisecurity.org/faq.html

+0

謝謝伯特,一個很好的幫助 – Simon 2010-01-12 16:07:28

0

我找到了答案。通常Grails有一個名爲ROLE_USER的默認角色。當您註冊新用戶時,它會查找具有該名稱的角色,如果它找到一個角色,則將其分配給用戶。

消息「未找到默認角色」在如何讀取時不明確。

我首先認爲它的意思是「你需要在某處定義一個默認角色,以便新分配給它的用戶」。

但是我認爲這意味着「你需要在你的角色表中創建一個名爲ROLE_USER的數據庫行,這樣正常的配置才能工作」。

它讓我感到擔憂的是,安全特性的grails生成的一部分應該只是將ROLE_ADMIN和ROLE_USER添加到數據庫引導中,並且已經完成了錯誤的可能性。