2012-02-25 18 views
1

に私はGrailsの2.0枠組みの中で初心者と私はこのチュートリアルhttp://grails.org/Simple+Avatar+Uploaderに従うことをしようとしています。私はこのコードを実装しましたが、UserController.groovyの 'def user = User.current(session)'というUserController.groovyにエラーが発生しました。 'No such property:User for class:grailtwitter.PersonController'この行はユーザーの現在のセッション。私はこの仕組みの説明を探していますか?現在のセッションは、Grailsの

答えて

1

このコードは不完全です。コントローラーは、現在ログインしているユーザーを特定する方法があることを前提としています。暗黙的に行def user = User.current(session)は、セッション中に取り、おそらくあなたがユーザーを取得するために、それに設定したいくつかのフィールドを使用するユーザークラス自体にcurrent()メソッドが定義されていることを前提としています。それは一種のばかだ。これを行うには

一般的な方法は、独自の認証メカニズムを構築することです。これは素朴な実践であり、あなたがぽっかりセキュリティホールのために開いてアプリケーションを残したくない限り、あなたはSpring Security Coreを使用してオフはるかに優れていることに注意してください。しかし、練習のために、のようなもの:あなたはずっと先に進む前に、あなたはおそらくしたい

def user = session.user ?: new User(userid:"I'm a little teapot") 

と( - - def user = User.current(session)

def login = { 
    //if you're stupid enough to store your passwords in plain text and not sanitize user inputs, you deserve to be hacked 
    def user = User.findByPassword(params.password) 
    if(user){ 
     session.user = user 
    } 
} 

あなたはその後、チュートリアルで問題のある行を置き換えることができますこのより多くを得る前にfree eBook on Grailsを歩いてください。 Grails in Actionも強くお勧めします。

0

私はクラスをインポートしていなかったからだと、過去にこのに実行したとGrails/Groovyのは、私はユーザーと呼ばれる変数ではなく、クラスのメソッドにアクセスしようとしていると考えています。

+0

どのような種類のデータ「現在(セッション)」が保持されていますか? – Srivi

+0

Userクラスはどのパッケージですか?それは穀物包装のパッケージではない場合は、インポートする必要があります。 – proflux

+0

よく私はインポートパッケージ。 "org.grails.twitter.User.current()は引数型に適用できます:(org.codehaus.groovy.grails.web.servlet.mvc.GrailsHttpSession)values: [セッションの内容:org.codehaus.groovy.grails.FLASH_SCOPE = org.codehaus ........... " – Srivi

関連する問題