1

grails 1.0.4 + acegi 0.4.1 プロジェクトを acegi 0.5.1 で grails 1.1 にアップグレードしました。

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

2009-04-26 12:38:46,997 [403984690@qtp0-0] エラー springsecurity.GrailsDaoImpl - ユーザー
[admin] には GrantedAuthority がありません

ログインできない理由がわかる方いますか?ユーザー「admin」が Bootstrap に作成されます。

あなたが私を助けてくれることを願っています!ドイツからありがとう、whitenexx

4

3 に答える 3

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 = {
     }
} 
于 2009-04-30T13:46:06.437 に答える
0

問題が見つかりました。passwordEncoder() または encodePassword() メソッドを自分で (アルゴリズムなどを使用して) 編集/コーディングする必要がありました。passwordEncoder() は非推奨です。encodePassword() を使用してください!

于 2009-05-03T21:38:05.577 に答える
0

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

于 2011-02-23T17:42:41.660 に答える