Asegure algunas, pero no todas las páginas en una aplicación Grails con el plugin Shiro

StackOverflow https://stackoverflow.com/questions/2207065

  •  18-09-2019
  •  | 
  •  

Pregunta

Puede que sea sólo yo, pero tengo dificultades para comprender cómo asegurar sólo algunas de las páginas en una aplicación Grails con el Shiro Plugin.

Yo uso este en mi filtro de seguridad:

class SecurityFilters {
  def filters = {
    all(uri: "/**") {
      before = {
        // Ignore direct views (e.g. the default main index page).
        if (!controllerName) return true

        // Access control by convention.
        accessControl ( auth:false)
      }
    }
  }
}

y he creado un usuario en mi archivo de arranque:

    def adminRole = new Role(name: "Administrator")
    adminRole.addToPermissions("secured1")
    adminRole.addToPermissions("secured2:create,save,edit,update")
    adminRole.save()

    def user = new User(username: "admin", passwordHash: new Sha512Hash("***").toHex())
    user.addToRoles Role.findByName('Administrator')
    user.save()

y funciona. El problema es que también protege todos los controladores / acciones.

Tenía la esperanza, que sería posible no especifica las acciones que desea proteger en mi SecurityFilter, pero sólo en los permisos .. Pero es esto posible?

¿Fue útil?

Solución

La propiedad estática 'filtro' le permite definir múltiples patrones de filtrado. Puede utilizar el parámetro 'uri' o el parámetro 'controlador'. Si utiliza 'controlador' también se puede añadir un parámetro de 'acción'. Cada uno de estos parámetros tiene una expresión regular para que pueda hacer cosas como:

admin(uri:"/admin/**")
...
browseStore(controller:"store", action:"(show|list)")
...
shopStore(controller:"store", action:"*")
...

http://www.grails.org/Filters para obtener más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top