2017-04-13 9 views
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 } 
 
     } 
 
    }

答えて

0

サインアップの要求を処理するコントローラアクションの前@Secured(['permitAll'])を使って公開します。

+0

サインアップコントローラに@Secured(['permitAll'])アノテーションを指定しました –

関連する問題