2016-03-28 10 views
0

Ich verwende Grails 3 und das Spring Security Plugin zur Authentifizierung.Grails 3 Spring Security Plugin

Wenn ich treffe die folgende URL manuell in meinem Browser:

http://localhost:8080/cool-0.1/

ich die Login-Seite zu bekommen, und ich kann erfolgreich authentifizieren, Folgern, dass ich richtig meinen Benutzername/Passwort-Combo eingeben.

Problem:

Wenn ich unter Verwendung des Original-Link, ohne den Schrägstrich auf meine Seite navigieren (IE: http://localhost:8080/cool-0.1 und nicht http://localhost:8080/cool-0.1/) Ich vollständig umgehen die Sicherheit, und bin in der Lage die Homepage zu sehen, ohne Authentifizierung . (Ja, lösche ich meinen Cache, schließen Sie alle Fenster, etc.)

Meine URL-Zuordnungen enthalten den folgenden Code:

"/"(controller: "home", action: "index") 

Meine Feder Sicherheit groovy Datei enthält den folgenden Code:

grails.plugin.springsecurity.controllerAnnotations.staticRules = [ 
    [pattern: '/login/**', access: ['permitAll']], 
    [pattern: '/error', access: ['permitAll']], 
    [pattern: '/**', access: 'isAuthenticated()'] 
] 
grails.plugin.springsecurity.filterChain.chainMap = [ 
    [pattern: '/assets/**', filters: 'none'], 
    [pattern: '/**/js/**', filters: 'none'], 
    [pattern: '/**/css/**', filters: 'none'], 
    [pattern: '/**/images/**', filters: 'none'], 
    [pattern: '/**/favicon.ico', filters: 'none'], 
    [pattern: '/**', filters: 'JOINED_FILTERS'] 
] 

Ich sehe nicht, was mir hier fehlt. Warum verursachen die beiden Szenarien Probleme? Die Dokumentation für Spring Security Grails 3 erwähnt nichts, was nützlich wäre, um dies zu lösen.

Antwort

0

Die Lösung ist das ** Muster zu verwenden:

[pattern: '**', access: 'isAuthenticated()'], 

Die Dokumentation sagte die Voraussetzung, dass die Verwendung von/** und ** identisch ist, jedoch durch das Experiment zu tun sowohl mit, klar es ist nicht.

Verwandte Themen