Grails的当前会议

时间:2012-02-25 22:12:01

标签: grails

我是Grails 2.0框架的初学者,我正在尝试遵循本教程http://grails.org/Simple+Avatar+Uploader。我实现了这段代码,但是我在UserController.groovy中遇到错误,在这行'def user = User.current(session)'为'没有这样的属性:用户为类:grailtwitter.PersonController'我假设这行是用户的本届会议。我正在寻找一个如何工作的解释?

2 个答案:

答案 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的变量而不是该类的方法。