【问题标题】:grails spring-security-core how to access scaffolded pagesgrails spring-security-core如何访问脚手架页面
【发布时间】:2014-05-11 07:48:13
【问题描述】:

当您通过此教程安装安全插件时:http://spring.io/blog/2010/08/11/simplified-spring-security-with-grails/

默认情况下,它会锁定所有内容。您无法访问任何页面。这很好,因为您可以将此注释添加到每个控制器方法:

@Secured(['ROLE_USER'])
    def myView() {

但是,如果您使用:

      static scaffold = true
  1. 如何为所有页面创建默认角色 say admin,这样我就不会在默认情况下锁定页面的任何访问权限?

  2. 如何将角色添加到脚手架页面?


【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    Grails 的 spring 安全插件提供了多种保护页面/操作/控制器的方法。注释只是一种方式。当您生成控制器而不是脚手架控制器时,通常会使用注释。如果你依赖脚手架,通常你会使用简单的地图来保护你的应用程序。

    the documentation 中概述了保护资源的各种方法。

    如果您使用简单映射,那么您可以轻松定义一个全局模式,允许所有 ADMIN 角色访问所有内容。请记住,第一个匹配模式是适用的模式。比如:

    grails.plugin.springsecurity.interceptUrlMap = [
       '/**':                ['ROLE_ADMIN'],
       '/':                  ['permitAll'],
       '/index':             ['permitAll'],
       '/index.gsp':         ['permitAll'],
       '/**/js/**':          ['permitAll'],
       '/**/css/**':         ['permitAll'],
       '/**/images/**':      ['permitAll'],
       '/**/favicon.ico':    ['permitAll'],
       '/login/**':          ['permitAll'],
       '/logout/**':         ['permitAll']
    ]
    

    此外,阅读此插件的文档将有助于回答有关它的使用以及如何按照您需要的方式准确配置它的许多潜在问题。它写得很好,非常值得花时间。

    【讨论】:

    • '/**': ['ROLE_ADMIN'] 成功了。我在手册中看到了这一点,但认为这意味着一切都具有 ADMIN 角色,因为我在手册中找不到它如何解决冲突(例如,如果您在控制器中说 ROLE_USER,但在 interceptURLMap 中说 ADMIN)。
    • 此外,手册页说任何人都应该可以查看:“def any() { render 'anyone can see this' }” 但事实并非如此,开箱即用,一切对每个用户隐藏。
    • 在任何示例中我都找不到任何其他愚蠢的问题,您如何注销?
    • 访问 /logout 会注销。 在您的 GSP 中。
    • 哇,成功了!当你知道的时候很容易。你为我节省了几个小时。最后一个问题,有没有一种简单的方法来设置控制器和视图来编辑用户和角色,还是我必须手动创建这些?
    猜你喜欢
    • 2023-03-29
    • 2015-01-08
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2013-12-09
    • 2011-09-12
    • 2011-04-22
    相关资源
    最近更新 更多