Grails:3.3.0 Spring Security:3.2.0.M1
我已经对此做了一些研究,我发现(Seeing only your own data in Grails)帖子的回答可能是我正在寻找的答案,但不知何故它不起作用。
这是我捕获登录用户并尝试过滤掉的方法,只是让登录用户查看自己的数据。 (这是我的任务控制器) 顺便说一句 [任务:任务] 的用途是什么
def index(Integer max) {
def authenticated = getAuthenticatedUser().username
def tasks = User.findAllByUsername(authenticated)
[tasks: tasks]
params.max = Math.min(max ?: 10, 100)
respond Task.list(params), model:[tasks: Task.count()]
}
这是我的任务域
class Task {
transient springSecurityService
String task
Project project
Pic picName
static hasMany = [subTask:Subtask]
static belongsTo =[Project,Pic,User]
}
请给我一些建议或者告诉我哪里弄错了! 提前致谢! 最诚挚的问候,嗨
答案 0 :(得分:0)
我不认为您的要求与Spring Security无关。
关于“顺便使用什么[任务:任务]” - 看起来你在代码中有两个返回点,所以你需要修复它 - 在groovy你可以省略“返回”如果你在最后一行 - 所以我假设这一行是包含任务列表的模型的返回 - 但代码在它之后继续......
如果任何任务属于用户,那么你应该使用:
User user = getAuthenticatedUser() // method for getting the curren user
params.max = Math.min(max ?: 10, 100) // any query params you want to add
def tasks = Task.findAllByUser(user, params) //get the user Tasks using the query params
然后返回数据+任何其他数据,如计数等。
您可以考虑不使用多个belongsTo它会使您的模型过于复杂而不需要:
static belongsTo =[Project,Pic,User]
如果Task属于用户,您可以保留每个任务的用户ID或用户名,然后通过此属性进行查询 - 例如:
class Task {
transient springSecurityService
String username // not unique
String task
Project project
Pic picName
static hasMany = [subTask:Subtask]
static belongsTo =[Project,Pic]
}
def username = getAuthenticatedUser().username // method for getting the current username.
params.max = Math.min(max ?: 10, 100) // any query params you want to add.
def tasks = Task.findAllByUsername(username, params) get the user Tasks using the query params.
BTW在域模型中保留服务不是一个好习惯 - 通过将其注入您的控制器/服务来使用该服务
transient springSecurityService
答案 1 :(得分:0)
我通过调出"任务"在gsp。它为我工作
def authenticated = getAuthenticatedUser().username
def tasks = Task.findAllByLogginUser(authenticated)
params.max = Math.min(max ?: 10, 100)
respond Task.list(params), model:[tasks:tasks] // [tasks:tasks] is to passing tasks into my domain

然后我只是从我的域类$ {tasks}
中调用