让我再次开始说我还是Grails和Spring Security的新手。我一直在尽力筛选文档,示例和示例。这一切都让我有点困惑或不堪重负。
我正在尝试使用Spring来管理用户对信息的访问。我有一个网站框架。我希望管理员能够添加人员,连接到人员的位置和位置的图像。图片与此人相关联。我希望登录的人只能看到他们的照片。
使用sec标签或@Secure注释或组合执行此操作是更好还是最佳做法?哪个最安全?我使用sec:标签限制访问。是否有一个sec:标签我可以用来选择要显示的图片吗?
答案 0 :(得分:3)
我认为你可以用更简单的方式看待这个问题。基本的插件安装基本上有3种方法来管理安全性。
基本上就是这样。以上都不比另一个更安全或更不安全。有些人似乎混淆的是“我的数据”的概念以及Spring Security如何处理这个问题。如果在控制器中,您希望用户只能访问其“图片”,则应根据经过身份验证的用户查询“图片”。
def authenticatedUser = User.findByUsername(springSecurityService.principal.username)
def pictures = Picture.findAllByUser(authenticatedUser)
然后视图只关心您发送给它的图片。每个登录的用户只能看到他们的照片。如果管理员已登录,并且需要查看所有图片,您可能会执行以下操作:
def authenticatedUser = User.findByUsername(springSecurityService.principal.username)
if (SpringSecurityUtils.ifAllGranted("ROLE_ADMIN")) {
def pictures = Pictures.list()
}
但是,我可能只是为了管理目的而单独使用一个控制器而不是在一个控制器中尝试执行太多逻辑。或者,将逻辑移动到服务。
希望这有帮助。