次のような文字列を含む2つの配列があります。
アレイ#1
abcd
efgh
servicegroup_1
ijkl
アレイ#2
servicegroup_3
servicegroup_1
"VERIFY: OK"
配列#1に配列#2の文字列が少なくとも1つ含まれている場合、(コンソールで)のような文字列を出力したいと思います。それ以外の場合は、文字列"VERIFY: KO"
を印刷する必要があります。
次のようなコードを実装しました。
for (int i = 0; i < scopeFile.length; i++) {
for (String element : scopeJWT) {
if (scopeFile[i].contains(element)) {
ctx.setSendZuulResponse(true);
System.out.println(now + " --- " + "[Check Signature: OK]" + " [Verify Scope: OK]" + " [Verify expTime: OK]");
} else {
ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
System.err.println(now + " --- " + "[VERIFY SCOPE: KO]");
}
}
}
しかし、それはとの両方VERIFY SCOPE: OK
を返しVERIFY SCOPE: KO
ます。私が報告した配列を考慮したとしても、私はちょうど印刷したでしょうVERIFY SCOPE: OK
(配列#1にはが含まれているためservicegroup_1
)
コードを修正するためのアイデアはありますか?ありがとうございました
文字列がArray1で見つかった後、ループを解除するのを忘れました。break;
この行の後にを追加してみてください:
System.out.println(now + " --- " + "[Check Signature: OK]" + " [Verify Scope: OK]" + " [Verify expTime: OK]");
そして、ループの外側で問題のないケースを確認します。
このような:
boolean isOk = false;
for (int i = 0; i < scopeFile.length; i++) {
for (String element : scopeJWT) {
if (scopeFile[i].contains(element)) {
ctx.setSendZuulResponse(true);
System.out.println(now + " --- " + "[Check Signature: OK]" + " [Verify Scope: OK]" + " [Verify expTime: OK]");
isOk = true;
break;
}
}
}
if (!isOk) {
ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
System.err.println(now + " --- " + "[VERIFY SCOPE: KO]");
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加