我是Grails 2.0框架的初学者,我正在尝试遵循本教程http://grails.org/Simple+Avatar+Uploader。我实现了这段代码,但是我在UserController.groovy中遇到错误,在这行'def user = User.current(session)'为'没有这样的属性:用户为类:grailtwitter.PersonController'我假设这行是用户的本届会议。我正在寻找一个如何工作的解释?
答案 0 :(得分:1)
此代码不完整。控制器预先假定您有一种识别当前登录用户的方法。隐含地,行def user = User.current(session)
假定您已在用户类本身上定义了一个current()
方法,该方法接收会话并且可能使用您在其中设置的某个字段来检索用户。那会很愚蠢。
执行此操作的常用方法是构建自己的身份验证机制。请注意,这是一种天真的做法,使用Spring Security Core 远远好于,除非您希望让应用程序处于打开状态,以便扩大安全漏洞。但是,对于练习,例如:
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
}
}
然后,您可以使用
替换教程中的违规行( -def user = User.current(session)
- )
def user = session.user ?: new User(userid:"I'm a little teapot")
在你走得更远之前,你可能想要进一步了解free eBook on Grails。还强烈推荐Grails in Action。
答案 1 :(得分:0)
当我在过去碰到这个时,因为我没有导入该类,Grails / Groovy认为我正在尝试访问一个名为User的变量而不是该类的方法。