2017-03-24 11 views
1

과 정규식은 내가 그들 모두를위한 필터가이 개 URL의 주소를 가지고있다.Grails의 :</p> <pre><code>all(uri: '/api/first/**') { before = } all(uri: '/api/second/**') { before = } </code></pre> <p>내가 모두를위한 하나의 필터를 작성하려면 : 사용 필터

all(uri: '\\/api\\/(first|second)\\/.*', regex: true) 
{ 
    before = 
} 

을하지만 그것은 작동하지 않습니다 은 그래서 정규식 필터를 쓰기 위해 노력했다. 여러 가지 방법을 시도했습니다 ('**'/ '. *'/ invert : true) 하지만 성공하지 못했습니다.

누군가 실수로 필터를 작성하는 올바른 방법을 알고 있습니까?

감사합니다 ... documentation으로 당

+0

아마도이 표현을 과장했습니다. ''/ api/(first | second) /.* ''를 시도하십시오. –

+0

시도했습니다. 작동하지 않습니다. – Benjy

+0

'uri' 대신'find'를 사용해보십시오 :'all (regex : true, find : '/ api/(first | second) /.*')' –

답변

0

uriant path하고 정규 표현식을 지원하지 않습니다. find에 의존해야합니다.

all(regex: true, find: '/api/(first|second)/.*') 
{ 
    before = { 
     ... 
    } 
} 
+0

정말로'/'를 이스케이프해야하는지 잘 모르겠습니다. ,이 기호는 특별한 정규 표현식 연산자가 아니며 정규 표현식 구분 기호로 사용될 때만 이스케이프 처리해야하며 여기서는 정규식 구분 기호가 사용되지 않습니다. –

+0

다른 여러 URL에서 필터를 찾았습니다. 난 그냥 두 주소에서 올 필요가있다 – Benjy

+0

아마' '^/api/(first | second) /.*''와 같이 정규 표현식을 고정해야한다. 질문을 더 많은 데이터로 업데이트하십시오. –