2009-04-26 13 views
1

私はgrails 1.0.4 + acegi 0.4.1プロジェクトをacegi 0.5.1でgrails 1.1にアップグレードしました。Grails Acegiプラグインspringsecurity.GrailsDaoImpl - ユーザー[admin]にGrantedAuthorityがありません

エラーなしでアプリケーションを起動できますが、ログインしたいときは「間違ったユーザー名またはパスワード」というメッセージが表示されます。 Grailsのシェル出力は次のようになります。

2009年4月26日12:38:46997 [403984690 qtp0-0 @] ERROR springsecurity.GrailsDaoImpl - ユーザー
は、[管理]何GrantedAuthority

を持っていません

誰かがなぜ私がログインできないのか分かっているのでしょうか?ユーザー "admin"はブートストラップで作成されます。

私があなたを助けてくれることを願っています! ドイツのおかげで、 ホワイトテックス

答えて

0

私は私の問題を発見しました。私はpasswordEncoder()またはencodePassword()メソッドを自分で編集しなければなりませんでした(私のアルゴリズムなどで)。 passwordEncoder()は非推奨です。encodePassword()を使用してください!

1

私は全く同じ問題に遭遇しました。 BootStrap.groovyでユーザーを作成するときに、パスワードとオプションのフィールドですべてのフィールドを最初に作成することを確認してください(理由はわかりません)。次に、新しい役割を作成して、その役割に人を追加します。

ユーザがロールに割り当てられているかどうかを確認する1つの方法は、ユーザをロールにマッピングするrole_peopleテーブルを調べることです。

これは私のBootStrap.groovyファイルです:

class BootStrap { 
    // include this line to encode password for ACEGI 
    def authenticateService 

    def init = { servletContext -> 
     //create admin user 
     def password = authenticateService.passwordEncoder("password") 
     def superadmin = new User(username:"admin",userRealName:"Administrator",passwd:password,enabled:true,emailShow:true,description:"admin user",email:"put email here").save() 

     //create admin role 
     def sudo = new Role(authority:"ROLE_ADMIN",description:"Site Administrator") 
     // now add the User to the role 
     sudo.addToPeople(superadmin) 
     sudo.save() 

     new Role(authority:"ROLE_USER",description:"User").save() 

    } 
    def destroy = { 
    } 
} 
+0

私の問題が見つかりました。私はpasswordEncoder()またはencodePassword()メソッドを自分で編集しなければなりませんでした(私のアルゴリズムなどで)。 passwordEncoder()は非推奨です。encodePassword()を使用してください! – whitenexx

0

私はacegiを使いましたが、同様の問題がありました。 acegiのエンコードデフォルトを使用する場合は、passwordEncoder()と呼び出してください。それ以外の場合はencodePassword()に電話する必要があります。

関連する問題