2017-08-28 17 views
0

Deadboltの@Patternアノテーションを使用してJavaクラスを検証しています。私はこれらの文字列のいずれかが存在する場合、アクセス権を与えたいと思います: 'TM_TASK' OR 'TM_CHECKLIST'。今私はちょっと混乱している@Patternの中でこれらの文字列を提供する方法について混乱しているので、文字列が2つの文字列のいずれかにマッチするとアクセスできるようにする。また、regex(私はそれらに新しいものだが)他の無効な文字列ではなく、Regexを使用している2つの文字列( 'TM_TASK' OR 'TM_CHECKLIST')のいずれかであるかどうかを検証します。複数の文字列に@Patternアノテーションを使用してjavaでコントローラクラスを検証する

@Api(value = "/tasks") 
@Pattern(value = "^[a-zA-Z0-9_]*$", patternType = PatternType.REGEX) 
public class TaskController extends BaseController { 

    private static Logger.ALogger log = Logger.of(TaskController.class); 
    private TaskService taskService; 
    private FormFactory formFactory; 
} 
+0

誰でも解決できますか? –

答えて

0

標準正規表現(TM_TASK|TM_CHECKLIST)を使用してこれを行うことができます。

@Api(value = "/tasks") 
@Pattern(value = "^(TM_TASK|TM_CHECKLIST)$", patternType = PatternType.REGEX) 
public class TaskController extends BaseController { 

    private static Logger.ALogger log = Logger.of(TaskController.class); 
    private TaskService taskService; 
    private FormFactory formFactory; 
} 
+0

正規表現が機能しません。ユーザーが "TM_CHECKLIST"パーミッションを持っていても、コントローラメソッドにアクセスすることはできませんでした。同じケースが "TM_TASK"に対して発生します。@Patternがそのような式を検証しないかもしれません。他の解決策? –

+0

[この例](https://github.com/schaloner/deadbolt-2-java-examples/blob/master/app/controllers/PatternController.java#L44)を見てください。最も可能性の高い説明は、 'Subject#getPermissions()'から返されるパーミッションがあなたの正規表現と一致しないということです。 'be.objectify.deadbolt.java.ConstraintLogic#pattern'にブレークポイントを設定して、何が起きているのかを正確に確認してください。 –

+0

ええと...今、それは働いています。実際に注釈の中にパターンのあるパターンタイプを追加することを忘れてしまった。 –

関連する問題