2017-04-13 1 views
0

Ich benutze Feder-Sicherheits-Kern 2.0-RC5 in meinen 2.4.4 Anwendung. Vor kurzem habe ich den folgenden Filter in meiner Anwendung implementiert, aber das Problem ist, wenn eine SignupController-Anfrage kommt, ein Fehler aufgrund der SpringSecurityService-Injektion (im Falle der Anmeldung gibt es keine Authentifizierung und keine Sitzung).InfectionSecurityService in einen Filter injizieren, der einen Fehler verursacht

Also wie kann ich SpringSecurityService in meinem Filter injizieren, ohne die Anmeldung Anfrage zu fangen. mit @Secured(['permitAll']) vor der Aktion

import com.services.portal.ProfileService; 
 
import com.services.portal.SignupService; 
 
import com.services.portal.UserSessionService; 
 
import com.domain.auth.User; 
 
import com.services.portal.FormProcessService; 
 
import com.services.portal.ProfileService; 
 
import com.services.portal.SignupService; 
 
import com.services.portal.UserSessionService 
 

 
import grails.plugin.springsecurity.SpringSecurityService; 
 
import grails.plugin.springsecurity.annotation.Secured 
 
import grails.plugin.springsecurity.ui.AbstractS2UiController; 
 
import groovy.sql.Sql 
 

 

 

 
class AuthFilters { 
 
\t def springSecurityService 
 
\t def filters = { 
 
\t \t allExceptIndex(controller: 'login|signup|logout', invert: true) { 
 
\t \t \t before = { 
 
\t \t \t \t if(session["Username"] == null){ 
 
\t \t \t \t \t def Username = springSecurityService.getPrincipal().getUsername() 
 
\t \t \t \t \t session["Username"] = Username 
 
\t \t \t \t } 
 
\t \t \t \t if(session["UserId"] == null){ 
 
\t \t \t \t \t String userId = springSecurityService.getPrincipal().getId() 
 
\t \t \t \t \t session["UserId"] = userId 
 
\t \t \t \t } 
 
\t \t \t \t if(session["incomingIp"] == null){ 
 
\t \t \t \t \t def incomingIp = request.remoteHost 
 
\t \t \t \t \t session["incomingIp"] = incomingIp 
 
\t \t \t \t } 
 
\t \t \t \t if(session["currUserRole"] == null){ 
 
\t \t \t \t \t def roles = springSecurityService.getPrincipal().getAuthorities() 
 
\t \t \t \t \t roles = roles.toString().substring(1, roles.toString().length()-1) 
 
\t \t \t \t \t session["currUserRole"] = roles 
 
\t \t \t \t } 
 
\t \t \t } 
 

 
\t \t \t after = { Map model -> 
 
\t \t \t } 
 

 
\t \t \t afterView = { Exception e -> 
 
\t \t \t } 
 
\t \t } 
 
     } 
 
    }

Antwort

0

Der Controller, der Registrierungsanfrage durch öffentlich machen behandeln.

+0

Ich habe bereits @Secured (['allowAll']) Annotation an den Anmeldecontroller gegeben –

Verwandte Themen