わかった
Authorityにロールを追加して、そのロールをPersonに追加したユーザーに設定してもダメな理由がわかった。
自動生成されたPersonControllerでsaveアクションの中で呼ばれるaddRoleメソッドを見たらこんなだった。
private void addRoles(person) { for (String key in params.keySet()) { if (key.contains('ROLE') && 'on' == params.get(key)) { Authority.findByAuthority(key).addToPeople(person) } } }
要するにAuthorityに設定するロール名は「ROLE」という文字が入ってないとダメらしい。
それは知らんかったなー。もしかしてAcegiSecurityを使う上では常識?
あと、
後で気づいたのだが、plugins/acegi-0.5.1/grails-app/conf/DefaultSecurityConfig.groovy の中を覗いたら、ユーザー登録時のデフォルトロールは「ROLE_USER」に設定されていた。
/** default user's role for user registration */ defaultRole = 'ROLE_USER'
設定を変えないんだったらこのロールも追加しなければ。。。