2014-05-11 31 views
1

我有一個關於Grails的問題(使用版本2.3.7)。 我想將當前登錄用戶的用戶名(我正在使用spring security core插件)保存到我的所有域中,因此用戶只有登錄時才能查看/編輯他自己的數據。要篩選內容用戶需要將用戶名和數據保存到數據庫中。如何使用Grails將當前登錄用戶自動保存到域?

我沒有找到一個例子如何以一種簡單和適當的方式做到這一點。 真的有必要在每個控制器和每個方法上手動添加用戶名? (保存,編輯等)

感謝您的幫助,SBR

編輯:我需要的是這裏所描述的東西:http://www.javacodegeeks.com/2013/11/getting-started-with-method-security-in-grails-using-spring-security.html 所以我伸出我的域級與「靜態屬於關聯= [作者:用戶]「和用戶等級爲」static hasMany = [注意:注意]「。但是現在當我想保存一個新域時,我收到作者不能爲空的錯誤。那麼如何用當前登錄的用戶填充此屬性?

+1

我建議你看一下ACL插件。這是很多的閱讀,但它的目的是做你正在做的事。 https://grails.org/plugin/spring-security-acl –

+0

謝謝我已經看過這個插件了,我覺得它太大了,我的需求也很強大。難道不可能在域類中爲用戶定義一個默認值? 或者如果我真的需要ACL插件,有沒有人知道這個問題的教程? – sbr11

+0

如果你真的想要走這條路,那麼這將有助於你走上正確的道路:http://stackoverflow.com/questions/6984031/grails-adding-custom-fields-columns-to-all-domain-objects - 自動 –

回答

0

我想將當前登錄用戶的用戶名(我使用spring security core插件)保存到我的所有域中,因此用戶只有在登錄時才能看到/編輯他自己的數據

這聽起來像你正在考慮將用戶名添加到用戶所擁有的域類中?這不是一個好方法,您應該在User和這些域類之間添加關聯。

但現在當我想保存一個新的域時,我收到作者不能爲空的錯誤。那麼如何用當前登錄的用戶填充此屬性?

class NoteService { 
    SpringSecurityService springSecurityService 

    Note saveNote(Note note) { 
    User currentUser = springSecurityService.currentUser 
    currentUser.addToNotes(note) 
    note.save() 
    } 
} 
相關問題