Jestem początkujący we frameworku Grails 2.0 i staram się postępować zgodnie z tym samouczkiem http://grails.org/Simple +Awatar+przesyłający. Zaimplementowałem ten kod, ale otrzymuję błąd w UserController.groovy w tym wierszu „def user = User.current(session)” jako „Brak takiej właściwości: User for class: grailtwitter.PersonController” Zakładam, że ta linia przyjmuje użytkownika obecna sesja. Szukam wyjaśnienia jak to działa ?

1
Srivi 26 luty 2012, 02:12

2 odpowiedzi

Najlepsza odpowiedź

Ten kod jest niekompletny. Kontroler zakłada, że ​​masz sposób na identyfikację aktualnie zalogowanego użytkownika. Niejawnie wiersz def user = User.current(session) zakłada, że ​​zdefiniowałeś metodę current() w samej klasie użytkownika, która przyjmuje sesję i prawdopodobnie używa jakiegoś pola, które w nim ustawiłeś, aby pobrać użytkownika. To byłoby trochę głupie.

Typowym sposobem na zrobienie tego byłoby zbudowanie własnego mechanizmu uwierzytelniania. Pamiętaj, że jest to naiwna praktyka i o wiele lepiej używasz Wiosny Security Core, chyba że chcesz pozostawić aplikację otwartą ze względu na dziury w zabezpieczeniach. Ale dla praktyki coś takiego:

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
    }
}

Możesz wtedy zastąpić obraźliwą linię w samouczku (--def user = User.current(session)--) na

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

Zanim przejdziesz znacznie dalej, prawdopodobnie zechcesz zapoznać się z tym bezpłatnym e-bookiem na temat Grails zanim zajdziesz znacznie dalej. Gorąco polecam także Grails w akcji.

1
Visionary Software Solutions 9 marzec 2012, 14:53

Kiedy natknąłem się na to w przeszłości, dzieje się tak dlatego, że nie zaimportowałem klasy, a Grails/Groovy myśli, że próbuję uzyskać dostęp do zmiennej o nazwie User, a nie do metody w klasie.

0
proflux 26 luty 2012, 02:15