2

grails 2.4.4 に基づく新しいプロジェクトでは、反転オプションを使用してフィルター スキーマを使用しています。ルールを反転することにより、いくつかのコントローラーと別のコントローラーからの一部のアクションがフィルターで除外されます。

フィルターは、別のユーザー コントローラーからの Login、ForgotPassword、および ServerError コントローラーと saveUser、verifyRegistration アクションには適用されません。このフィルター スキーマは期待どおりに機能しません。

ログイン コントローラー内でログイン API を呼び出すと、フィルターが実行され、例外がスローされます。

package com.project.filters

import grails.converters.JSON

class MyProjectAuthorizationFilters {

    def userService
    def grailsApplication

    def filters = {
        checkXAuthToken(controller:'login|forgotPassword|serverError', action:'saveUser|verifyRegistration', invert: true) {
            before = {
                try{
                    String tokenValue = request.getHeader('X-Auth-Token')
                    if(tokenValue == null && tokenValue == ""){
                        throw new MyCustomException(401, "Please provide X-Auth-Token in Header")
                    }
                    userService.getUserByAuthToken(tokenValue)
                }catch (MyCustomException error) {
                    error.stackTrace = ""
                    response.setStatus(error.status)
                    render error as JSON
                    return false
                }
            }
        }
    }
}

controllerExclude、actionExclude も使用できることはわかっていますが、なぜこれが壊れているのかわかりませんでしたか?

編集 controllerExclude と actionExclude を使用してみましたが、期待どおりに動作しません。これはおかしな動作ですか、それとも私が何か間違ったことをしていますか。フィルター クラス コード全体を投稿します。

ありがとう。

4

0 に答える 0