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 を使用してみましたが、期待どおりに動作しません。これはおかしな動作ですか、それとも私が何か間違ったことをしていますか。フィルター クラス コード全体を投稿します。
ありがとう。