GrailにAcegiプラグインを使用して新しいユーザーを登録すると、「デフォルトの役割が見つかりません」と登録するのはなぜですか。エラー
-
20-09-2019 - |
質問
おそらく別の方法で、Teh Acegiプラグインを使用してGrailsで新しく登録されたユーザーのデフォルトのセキュリティロールを設定するにはどうすればよいですか?
Acegi/Grailsのチュートリアルに従いました ここ コントローラー注釈を使用しています - 私はまだ何も確保していませんが。
web_userという2番目の役割を追加し、その役割にユーザーを正常に追加しました。
ただし、別の新しいユーザーでレジスタコントローラーを使用すると、Grailsからエラーメッセージが表示されます。 "Default role not found"
.
適切な作成方法でnullロールリストを処理するか、デフォルトのロール名を登録ビューから隠されたフィールドとしてバックバックすることで、これから大まかに自分の道をコーディングできる方法を見ることができましたが、それらは飾りを感じています。
ユーザードメインクラス自体で、またはユーザーとロールテーブルの間のデータベースの関係でこれを定義できるはずだと思います。
デフォルトの役割を定義するための意図的な意味と、なぜこのメッセージを受け取るのか。
ああ、そしてどのようにAcegiを発音しますか?
解決
これはドキュメントの問題です。登録ページは、パブリックサインアップページになると予想されるため、役割を選択することはできません。ユーザーを作成するときに少なくとも1つの役割が必要であるため、このワークフローに「デフォルト」ロールが構成されていることが期待されます。
「Defaultrole」属性を使用して、securityconfig.groovyでデフォルトの役割を設定できます。デフォルトでは「role_user」ですが、あなたが望むものは何でもできます。ユーザーが登録する前に、この値の権限インスタンスが必要です。
発音はFAQにあります - http://www.acegisecurity.org/faq.html
他のヒント
答えを見つけました。通常、Grailsの場合、role_userと呼ばれるデフォルトの役割があります。新しいユーザーを登録すると、その名前で役割を探し、それを見つけた場合はユーザーに割り当てます。
「デフォルトの役割が見つからない」というメッセージは、読み方を曖昧にします。
最初に、「新しく登録されたユーザーがそれに割り当てられるように、どこかでデフォルトの役割を定義する必要がある」ことを意味すると思いました。
しかし、それは本当に「通常の構成が機能するように役割_userと呼ばれる[ロール]テーブルにデータベースの行を作成する必要がある」ことを意味すると思います。
セキュリティ機能のGrailsの生成の一部は、どういうわけかデータベースBootstrapにRole_adminとRole_userを追加するだけで、エラーの可能性があると思います。