1

Grails2.0.4とSpringSecurityCoreプラグイン1.2.7.2を使用していることに注意してください

これはバグのようですが、最初に正しく実行していることを確認したいと思います。基本的に、HTTPSで保護された特定のURLが必要ですが、残りは非常に標準的なようです。ユーザーが安全でないURLにアクセスした場合、HTTPSにとどまらないようにします。最後のポイントを達成するためにこの行を追加するまで、すべてが正常に機能します。

    '/**':          'REQUIRES_INSECURE_CHANNEL'

その時点で、何らかの理由で私の安全なコントローラー名はすべて「grails」で書き直され、物事はひどく壊れます。だから例えば私が行くなら

http://localhost:8080/login/index

あれは。。。になる

http://localhost:8080/grails/auth/index.dispatch 

(「grails」は私のアプリの名前ではなく、「grails」という名前のコントローラーもありません-私のアプリはルートで実行されます)

ルートワイルドカードのエントリを削除すると、すべてが正常に機能し、保護したいページの外でhttpsにとどまりますが、URLにその奇妙な「grails」が表示されなくなります。

これが私の完全な構成です。安全なページは、私が見ることができる安全でないリソースをロードしようとはせず、「ANY_CHANNEL」で定義されたものだけをロードすることに注意してください。

grails.plugins.springsecurity.secureChannel.definition = [
        '/login/**':         'REQUIRES_SECURE_CHANNEL',
        '/register/**':         'REQUIRES_SECURE_CHANNEL',
        '/changePassword/**':         'REQUIRES_SECURE_CHANNEL',
        '/userAccountManagement/**':    'REQUIRES_SECURE_CHANNEL',


        '/simpleCaptcha/**': 'ANY_CHANNEL',
        '/img/**':        'ANY_CHANNEL',
        '/images/**':        'ANY_CHANNEL',
        '/static/**':        'ANY_CHANNEL',

        '/**':          'REQUIRES_INSECURE_CHANNEL'  //remove this, everything OK

]
4

1 に答える 1

1

URIは、/grails/controller/action.dispatchGrailsURLマッピングメカニズムから得られるものです。GrailsのURLマッピングは、リクエストを(RequestDispatcherの意味で)/grailsURIに転送するサーブレットフィルターによって実装され、DispatcherServletを駆動するのはこれらです。

ここで何が起こっているのかというと、/**これらの転送されたリクエストURIと元の事前マッピングURIでチャネルセキュリティフィルタが起動しているのではないかと思います。/grails/**ルールの前に明示的なANY_CHANNELを配置すると、機能します/**か?

于 2012-05-31T23:26:13.310 に答える