Grails中的当前会话

Grails中的当前会话,grails,Grails,我是Grails2.0框架的初学者,我正在努力学习本教程。我实现了这段代码,但在UserController.groovy的这一行“def user=user.current(session)”中出现了一个错误,因为“没有这样的属性:user for class:grailtwitter.PersonController”,我假设这一行接受了用户的当前会话。我正在寻找一个如何工作的解释 当我在过去遇到这个问题时,是因为我没有导入类,Grails/Groovy认为我试图访问名为User的变量,而不

我是Grails2.0框架的初学者,我正在努力学习本教程。我实现了这段代码,但在UserController.groovy的这一行“def user=user.current(session)”中出现了一个错误,因为“没有这样的属性:user for class:grailtwitter.PersonController”,我假设这一行接受了用户的当前会话。我正在寻找一个如何工作的解释

当我在过去遇到这个问题时,是因为我没有导入类,Grails/Groovy认为我试图访问名为User的变量,而不是类上的方法。

当我在过去遇到这个问题时,是因为我没有导入类,Grails/Groovy认为我试图访问名为User的变量,而不是类上的方法。

此代码不完整。控制器假定您有识别当前登录用户的方法。行
def user=user.current(session)
隐式地假设您已经在用户类本身上定义了一个
current()
方法,该方法接收会话,并可能使用您在其中设置的某个字段来检索用户。那有点傻

实现这一点的常用方法是构建自己的身份验证机制。请注意,这是一种幼稚的做法,如果您不想让应用程序因安全漏洞而处于开放状态,那么使用会比使用好得多。但是,在实践中,类似于:

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=user.current(session)
隐式地假设您已经在用户类本身上定义了一个
current()
方法,该方法接收会话,并可能使用您在其中设置的某个字段来检索用户。那有点傻

实现这一点的常用方法是构建自己的身份验证机制。请注意,这是一种幼稚的做法,如果您不想让应用程序因安全漏洞而处于开放状态,那么使用会比使用好得多。但是,在实践中,类似于:

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)
--)替换为


在你走得更远之前,你可能想在你走得更远之前先了解一下这一点。也极力推荐

“当前(会话)”包含什么样的数据?用户类在哪个包中?如果它不在grailtwitter包中,那么您需要导入。。我进口了一个包裹。现在,我得到了如下不同的错误:“没有方法签名:org.grails.twitter.User.current()适用于参数类型:(org.codehaus.groovy.grails.web.servlet.mvc.GrailsHttpSession)值:[会话内容:org.codehaus.groovy.grails.FLASH\u SCOPE=org.codehaus……。”我想你忽略了那行代码上的注释,上面写着
//或者你是如何选择当前用户的。换句话说,你可能无法复制和粘贴该代码并期望它工作。你需要其他方法来获取用户。什么样的数据是当前的(会话)'hold?用户类在哪个包中?如果它不在grailtwitter包中,那么您需要导入。嗯..我导入了包。现在我得到了不同的错误,如下“没有方法签名:org.grails.twitter.User.current()适用于参数类型:(org.codehaus.groovy.grails.web.servlet.mvc.GrailsHttpSession)值:[会话内容:org.codehaus.groovy.grails.FLASH_SCOPE=org.codehaus…………。”我想你忽略了那行代码上的注释,上面写着
//或者你是如何选择当前用户的。
。换句话说,你可能无法复制和粘贴代码并期望它工作。你需要其他方式获得用户。