Database 如何使用Grails将当前登录用户自动保存到域?

Database 如何使用Grails将当前登录用户自动保存到域?,database,security,grails,save,Database,Security,Grails,Save,我有一个关于Grails使用2.3.7版的问题。 我想将当前登录用户的用户名保存到我所有的域中,这样用户只有在登录时才能查看/编辑自己的数据。要按用户筛选内容,必须将用户名和数据保存到数据库中 我没有找到一个例子来说明如何以一种简单而恰当的方式来实现这一点。 实际上没有必要在每个控制器和每个方法中手动添加用户名??保存、编辑等 谢谢你的帮助,sbr 编辑:我需要的是这里描述的内容: 所以我用static belongsTo=[author:User]扩展了我的域类,用static hasMany

我有一个关于Grails使用2.3.7版的问题。 我想将当前登录用户的用户名保存到我所有的域中,这样用户只有在登录时才能查看/编辑自己的数据。要按用户筛选内容,必须将用户名和数据保存到数据库中

我没有找到一个例子来说明如何以一种简单而恰当的方式来实现这一点。 实际上没有必要在每个控制器和每个方法中手动添加用户名??保存、编辑等

谢谢你的帮助,sbr

编辑:我需要的是这里描述的内容: 所以我用static belongsTo=[author:User]扩展了我的域类,用static hasMany=[notes:Note]扩展了用户类。但是现在,当我想保存一个新域时,我收到一个错误:author不能为null。那么如何用当前登录的用户填充此属性呢

我想将当前登录用户的用户名保存到我所有的域中,这样用户只有在登录时才能查看/编辑自己的数据

听起来你在考虑将用户名添加到用户拥有的域类中?这不是一个好方法,您应该在用户和这些域类之间添加一个关联

但是现在,当我想保存一个新域时,我收到一个错误:author不能为null。那么如何用当前登录的用户填充此属性呢


我建议你看看ACL插件。这本书阅读量很大,但它的设计目的正是为了做你想做的事情。谢谢,我已经看过这个插件了,我觉得它太大太强大了,不适合我的需要。难道不能在域类上为用户定义一个默认值吗?或者如果我真的需要ACL插件,有人知道这个问题的教程吗?如果你真的想走这条路,那么这将帮助你走上正确的道路:好吧,我不认为我想做元编程。我只是想知道没有更小的解决方案。你知道如何根据我的需要配置ACL插件吗?我不知道如何根据你的需要配置ACL插件,但是你可以使用我提供给你的链接中的建议,为你的所有域扩展一个基类,其中包括用户名。如果你愿意,我可以试着写一个例子作为答案。但是要注意,这种方法会阻止您进一步扩展类。因为一个类只能扩展一个类。即使这样,你也必须自己处理过滤问题。这可以使用hibernate过滤器插件来完成。我想。
class NoteService {
  SpringSecurityService springSecurityService

  Note saveNote(Note note) {
    User currentUser = springSecurityService.currentUser
    currentUser.addToNotes(note)
    note.save()
  }
}