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

aet 发布于 2019-05-15 database 最后更新 2019-05-15 22:59 27 浏览

我有一个关于Grails的问题(使用版本2.3.7)。 我想将当前登录用户的用户名(我使用spring security core插件)保存到我的所有域中,因此用户只有在登录时才能查看/编辑他自己的数据。用户需要将用户名和数据保存到数据库中。 我没有找到一个例子如何以一种简单和适当的方式做到这一点。 没有必要在每个控制器和每个方法上手动添加用户名? (保存,编辑等) 感谢您的帮助,sbr 编辑:我需要的是这里描述的东西:http://www.javacodegeeks.com/2013/11/getting-started-with-method-security-in-grails-using-spring-security.html 所以我用“static belongsTo = [author:User]”扩展了我的Domain-Class,用“static hasMany = [notes:Note]”扩展了User-Class。但是现在当我想保存一个新域时,我收到作者不能为空的错误。那么如何用当前登录的用户填充此属性?

已邀请:

nin

赞同来自:

I would like to save the username of the current logged in user (I'm using the spring security core plugin) to all my domains, so the user can only see/edit his own data if he logs in.
听起来您正在考虑将用户名添加到用户拥有的域类中?这不是一个好方法,您应该在User和这些域类之间添加关联。
But now when I want to save a new Domain I receive the error that the author cannot be null. So HOW to fill this property with the current logged in user?
class NoteService {
  SpringSecurityService springSecurityService
Note saveNote(Note note) {
    User currentUser = springSecurityService.currentUser
    currentUser.addToNotes(note)
    note.save()
  }
}