3

いくつかの外部的な理由 (web.xml で定義され、一部のパスにのみ適用されるフィルターがいくつかあります) により、次の (簡略化された) シナリオを実現する必要があります。

  • /パスは認証を必要とせず、「/secured」にリダイレクトします
  • /secured認証が必要です
  • /public1/public2などは認証を必要としません
  • それ以外 ( ) はすべて/**認証が必要です

これを達成するために、filterChain定義された in がありConfig.groovyます:

grails.plugins.springsecurity.filterChain.filterNames = [..., 'myAuthenticationFilter']
grails.plugins.springsecurity.filterChain.chainMap = [
  '/': 'JOINED_FILTERS,-myAuthenticationFilter',
  '/public1/**': 'JOINED_FILTERS,-myAuthenticationFilter',
  '/public2/**': 'JOINED_FILTERS,-myAuthenticationFilter',
  '/**': 'JOINED_FILTERS'
]

ただし、/パスの一致には問題があります。私は試し'/'てみ''ました。このパスを と一致させることはでき'/*'ますが、より多くの URL と一致するため、これは必要ありません。

にアクセスするときにユーザーに認証を要求することはでき/ませ/secured/secured.

この動作を実現する良い方法はありますか?

Spring Security Core プラグインで Grails 2.0.4 を使用しています。

4

2 に答える 2

1

Grails には、これらのルールを定義する簡単な方法があります。InterceptUrlMapまたは requestmapを使用できます。

たとえば、Config.groovy でセキュリティ構成を定義できます。

grails.plugins.springsecurity.interceptUrlMap = [
   '/secured/**':    ['ROLE_ADMIN','IS_AUTHENTICATED_FULLY'],
   '/public1/**':   ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/public2/**':   ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/js/**':        ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/css/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/images/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/login/**':     ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/logout/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/':            ['IS_AUTHENTICATED_ANONYMOUSLY'],
   '/**':            ['IS_AUTHENTICATED_FULLY']          //put this as the last item
]
grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/secured"   //redirect `/` access to `/secured`
于 2012-12-26T03:43:11.673 に答える
0

URLMapping を使用して、特定のコントローラーとアクションを/URL に関連付けることはできますか? その後、特定のコントローラー/アクションのペアを除くすべてを保護できます。

于 2012-12-25T17:40:25.480 に答える