让我再次开始,说我还是Grails和Spring Security的新手。我一直在尽力筛选文档,示例和示例。这一切使我有些困惑或不知所措。
我正在尝试使用Spring来管理用户对信息的访问。我有一个陷害的网站。我希望管理员能够添加人员,与人员连接的位置以及位置的图像。图片已连接到该人。我希望登录的人只能看到他们的图片。
使用sec标签或@Secure批注或二者结合使用是更好还是最佳实践?哪个最安全?我使用sec:tags限制了访问。我可以使用sec:tag选择要显示的图片吗?
最佳答案
我认为您可以以更简单的方式看待这个问题。基本的插件安装基本上有3种管理安全性的方法。
基本上就是这样。以上任何一个都不比另一个安全。某些人似乎感到困惑的是“我的数据”的概念以及Spring Security如何处理它。如果在Controller中希望用户只能访问其“图片”,则应仅基于已认证的用户查询“图片”。
def authenticatedUser = User.findByUsername(springSecurityService.principal.username)
def pictures = Picture.findAllByUser(authenticatedUser)
然后, View 仅在乎您发送给它的图片。每个登录的用户将只看到他们的图片。如果管理员已登录,并且需要查看所有图片,则可以执行以下操作:
def authenticatedUser = User.findByUsername(springSecurityService.principal.username)
if (SpringSecurityUtils.ifAllGranted("ROLE_ADMIN")) {
def pictures = Pictures.list()
}
但是,出于管理目的,我可能只有一个单独的Controller,而不是尝试在一个Controller中执行过多的逻辑。或者,将逻辑移至服务。
希望这可以帮助。
关于spring - 在Grails中使用Spring Security限制内容访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307538/