2010-12-30 5 views
1

Es gibt mehrere Grails-Menü-Plugins, zum Beispiel das Navigation-Plugin. Ich muss dem Benutzer nur die Menüpunkte zeigen, auf die er gemäß seinem Benutzerprofil zugreifen kann. Was ist der einfachste Weg, dies zu erreichen? Gibt es ein Menü-Plugin, das in einige Sicherheits-Plugins integriert werden kann?Grails-Menü mit Profiling

Antwort

2

Die navigation plugin hat ein Beispiel für die Verwendung von isVisible, um Menüelemente bedingt auszublenden. Wenn Sie die Spring Security-Plugin verwenden, dann können Sie dies mit Methoden auf den SpringSecurityUtils kombinieren oder auf die injizierten SpringSecurityService Bohne:

def springSecurityService 
// ... 
static navigation = [ 
    [group:'userOptions', action:'login', order: 0, isVisible: { SpringSecurityUtils.ifAllGranted('ROLE_ADMIN') }], 
    [action:'logout', order: 99, isVisible: { springSecurityService.isLoggedIn() }] 
] 

Alternativ Frühling Sicherheit kommt mit some tags, die den Tag Körper machen wird nur, wenn die Benutzer ist/ist nicht eingeloggt, mit welchen Rollen usw., so dass Sie Ihre Menüpunkte einfach wie folgt rollen lassen können:

<sec:ifAllGranted roles="ROLE_ADMIN"> 
    // Render <g:link../> to an admin page here. 
</sec:ifAllGranted>