Sichern Sie einige, aber nicht alle Seiten in einer Grails-Anwendung mit dem Shiro Plugin

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

  •  18-09-2019
  •  | 
  •  

Frage

könne nur mich, aber ich habe eine harte Zeit zu verstehen, wie man mit dem Shiro Plugin nur einige der Seiten in einer Grails-Anwendung zu sichern.

Ich verwende in meinem Sicherheitsfilter:

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)
      }
    }
  }
}

, und ich habe einen Benutzer in meinem Bootstrap erstellt:

    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()

und es funktioniert. Das Problem ist, dass es sichert auch alle Controller / Aktionen.

Ich habe gehofft, dass es möglich wäre, die Aktionen angeben, die ich in meinem SecurityFilter schützen will, aber nur in den Berechtigungen .. Aber ist das möglich?

War es hilfreich?

Lösung

Die statische Eigenschaft ‚Filter‘ können Sie mehrere Filtermuster definieren. Sie können die ‚uri‘ Parameter oder die ‚Controller‘ Parameter verwenden. Wenn Sie ‚Controller‘ verwenden, können Sie auch eine ‚Aktion‘ Parameter hinzuzufügen. Jeder dieser Parameter nimmt einen regulären Ausdruck, so dass Sie tun können, Sachen wie:

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

Schauen Sie sich http://www.grails.org/Filters für weitere Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top