2014-11-07 4 views
1

나는 grails에 익숙하지 않고 지금까지는 간단한 필터 만 사용할 수있었습니다. 효율적인 방식으로 필터를 사용하고 싶습니다.Grails 필터 정규 표현식

내가 AppName/AppName/user/login에 접근 할 수 있도록 필터를 만들려면 내가 바로 그것을 얻을 수 없었다 (나는 jdk_1.6으로, Grails는 2.4.3을 사용하고 있습니다)! 나는 정규식을 사용하고 싶었지만 올바르게 이해하지 못했다!

내가이

 loggedInOnly(uri:'/**',uriExclude :"*.css|*.js|*image*|/|/user/login"){ 
      before = { 
       println "### ###### #### #" 
      } 
     } 

을 시도하고 나는 또한 정규식 매개 변수를 REVERS하려고하지만 난 운이 점점되지 있어요! 나는 구글을 모두 검색했지만 필터 정규식이 어떻게 작동하는지 알려주는 하나의 스레드를 찾을 수 없었다!

내가 xxxx(controller:'*', action:'*') 필터를 만든 다음 controllerNameactionName 매개 변수를 사용하여 확인할 수 있습니다. 그러나 더 좋은 방법이 있어야합니다!

간단히 말해서 질문 : 정규식은 필터에서 어떻게 작동합니까?

답변

1

먼저 documentation을 자세히 살펴보십시오. uriuriExclude은 개미 경로이며 정규 표현식이 아닙니다. ant paths의 기능을 보시면 논리가 불가능하다는 것을 알 수 있습니다. or s.

그래서이 모든 것을 염두에두고 regex을 사용하고 find 속성을 대신 사용합니다.

loggedInOnly(regex: true, find: '(.​*.css|.*.js|.*image.*|\\/|\\/user\\/login)​', invert: true){ 
    before = { 
    ... 
    } 
} 

공지 사항 나는이 필터는 find 내부의 패턴과 일치하지 않는 것을 적용하도록 반전을 사용 동해. 또한 응용 프로그램에서 정규 표현식을 확인해야 할 수도 있으므로이 구문을 머리 꼭대기에서 썼습니다. 그루비 웹 콘솔을 사용하여 구문을 엉망이 아닌지 확인했습니다.

희망이 도움이됩니다.

+0

감사 : 또한 내가 정규식에 대한 좋은 자습서를 찾을 수있는 참고 수 있습니까? –

+1

다음은 정규식에 대한 많은 정보가있는 사이트입니다. http://www.regular-expressions.info/tutorial.html –