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 }
}
}
Ich habe bereits @Secured (['allowAll']) Annotation an den Anmeldecontroller gegeben –