2017-01-13 1 views
1

In Grails Ich bin mitGrails: @Secured Anmerkung für OR Rollen

import grails.plugin.springsecurity.annotation.Secured 

@Secured({'ROLE_COMPANY', 'ROLE_BACKEND_ADMIN'}) 
class MobileSendersController { 

aber es setzt UND Beziehung zwischen Rollen. Ich brauche eine OR-Beziehung. Zugriff ist erlaubt auf ROLE_COMPANY oder ROLE_BACKEND_ADMIN.

In diesem question werden die Antworten empfohlen, @PreAuthorize zu verwenden. Ich habe es in Grails versucht, aber kein Glück. Vielleicht muss ich Pre- und Post-Annotations ändern, aber ich kann die Config nicht finden.

Irgendwelche Ideen?

+0

http://stackoverflow.com/questions/34182034/grails-spring-security-role-and-group gibt einen Hinweis, wie Rollengruppen funktionieren können. – Vahid

Antwort

0

Warum haben Sie zwei Rollen für einen Controller? Ziehen Sie in Betracht, eine einzige Berechtigung für Ihren Controller zu haben, und dann können Sie die Berechtigung zu Ihren Rollen ROLE_COMPANY und ROLE_BACKEND_ADMIN hinzufügen.

+1

Interessante Idee. Aber. Stellen Sie sich vor, Sie haben die Rollen A, B, C und die Controller C1, C2, C3. Auf C1 kann mit A und B zugegriffen werden. C2 mit B, C. C3 nur mit A. Mit Ihrem Ansatz würde jeder einzelne Controller eine spezielle Erlaubnis benötigen. Der Weg mit OR ist granularer. – zatziky

4

Wenn Sie einen Blick auf den Vordergrund documentation nehmen @Secured Sie werden sehen, dass es Spel Ausdrücke (documentation, darüber) verwendet, so dass man durchaus ein paar Dinge tun kann. Insbesondere würden Sie hasAnyRole() wie folgt verwenden:

@Secured("hasAnyRole('ROLE_COMPANY', 'ROLE_BACKEND_ADMIN')")

+0

Josh, ich habe die akzeptierte Antwort geändert, da @Ankit Agrawal Antwort mehr Grails ist. – zatziky

+0

@zatziky, okay, nicht sicher, was seine Antwort mehr Grails als meins macht. Sie benutzen beide das gleiche Plugin und die gleiche Annotation. Ihre Wahl obwohl. –

+0

Josh, du magst recht haben. Ich finde es besser, weil es kürzer ist. Es ist fraglich, denn für Newcomer ist die 'hasAnyRole' umfassender. Sie teilen also beide die angenommene Antwort. – zatziky

Verwandte Themen