0
Iam spring-security-core 2.0-RC5を使用しています。最近、私のアプリケーションで以下のフィルタを実装しましたが、問題はSignupControllerリクエストが来て、springSecurityServiceインジェクションのためにエラーが発生しています(サインアップの場合、認証もセッションもありません)。grails 2.4.4アプリケーションでspringSecurityServiceをエラーの原因となるフィルタに注入します。
それでは、サインアップリクエストをキャッチせずに、自分のフィルターにspringSecurityServiceを挿入できますか?
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 }
}
}
サインアップコントローラに@Secured(['permitAll'])アノテーションを指定しました –