2011-12-07 7 views
0

간단한 Grails 애플리케이션을 구축하고 있습니다. 보안을 위해 스프링 보안 플러그인과 스프링 보안 UI를 사용하고 있습니다. 나는 사용자의 세 가지 유형 갖고 싶어 :Grails Spring Security 플러그인을 사용한 무한 리디렉션

  • 표준 사용자 (클라이언트),
  • 지원 사용자를
  • 관리 사용자

클라이언트가 로그인 및 일부 요청을 할 것입니다 , 지원을 얻을 것이다 그 요청과 응답. 관리자는 사용자 권한 및 역할 및 기타 몇 가지 사항을 관리해야합니다.

  • ROLE_USER
  • ROLE_SUPPORT
  • ROLE_ADMIN 그는 사용자가 로그인/그녀가 사용자 역할에 따라 다른 페이지에 리디렉션됩니다

:

그래서 기본적으로 나는 세 가지 역할이있다. 나는 조언을 따라 link에서 이것을했다.

이것은 작동합니다. 그러나 때때로 나는 다음과 같은 오류가 발생합니다 :

Firefox has detected that the server is redirecting the request for this address in a way that will never complete. This problem can sometimes be caused by disabling or refusing to accept cookies.

이 내 UrlMappings.groovy입니다 :

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 

      } 

     } 

     "/"(controller:'login', action:'auth') 
     "500"(view:'/error') 

    } 
} 

올바른 aproach이 무엇입니까? 모든 역할마다 다른 컨트롤러를 만들어야합니까? 아니면 하나의 RequestController를 만들어야합니까? (대부분의 작업은 요청 도메인 클래스를 사용하여 수행해야합니다.) 예를 들어 userList, supportList, adminList 등 모든 역할마다 다른 작업을 지정해야합니다.

+0

@Antoine 편집 해 주셔서 감사합니다. 훨씬 좋아 졌어. – drago

+0

때때로 말을 할 때 정확히 언제입니까? 어떤 경우에는 항상 재현 할 수 있습니까? 그 사건들은 무엇입니까? – omarello

+0

@omarello 정상적으로 작동하지만 약간의 변경 작업을 수행하면이 루프가 시작되었습니다. 나는 정확한 변화가 무엇인지를 기억할 수 없다. 그래서 내가 더 공부하기 전에 리디렉션을위한 요청 컨트롤러의 인덱스 작업을 사용할 것입니다. – drago

답변

2

약간 다른 역할을 가진 내 grails 앱과 비슷한 요구 사항. UrlMappings.groovy

내 HomeController에서 다음
"/"(controller: "home") 

에서

(이 정확히 내 코드가 아닙니다하지만 당신은 아이디어를 얻을)

def user 

def index = { 
    user = springSecurityService?.getAuthentication()?.details 

    def role = user.getRole() 
    if ('admin'.equals(role)) { 
     redirect(view:'admin') 
    } else if ('support'.equals(role)) { 
     redirect(view:'support') 
    } else { 
     redirect(view:'home') 
    } 
} 

내 생각 엔 당신입니다 : 내가 뭘하면 다음과 같다 리디렉션 문제는 로그인 페이지에 오류가있는 경우 발생합니다. 예외를 어떻게 처리하는지 확인하고 오류를 다시 유발하는 로그인 페이지로 다시 리디렉션하지 않도록하십시오.

관련 문제