我對Spray很新,所以我猜這只是我沒有正確理解框架的工作原理。然而,當我試圖處理時,我遇到了似乎很奇怪的行爲。此問題具體參考this documentation on directives,但它也可能適用於其他自定義指令。噴灑授權指令不能按預期工作?
當我嘗試使用Spray附帶的authorize
指令時,HTTP響應根據返回的值正確顯示。也就是說,當authorize
的返回值是false
時,我得到了一個403 Forbidden,而當它是true
時,我得到200 OK。但是,似乎傳遞給它的函數仍然執行,即使它看起來不應該。
請看我創建的this SBT project來測試這個。它完全證明了我的問題,所以,希望這有助於解決我的問題。與運行:
sbt test
你應該在默認情況下看到的輸出應該是非常類似以下內容:
[info] Test:
[info] route
[info] - should succeed and have side effects
[info] - should fail and not have side effects *** FAILED ***
[info] 1 did not equal 0 (Test.scala:28)
[info] Run completed in 779 milliseconds.
[info] Total number of tests run: 2
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 1, canceled 0, ignored 0, pending 0
[info] *** 1 TEST FAILED ***
再次,我所關注的是:爲什麼是傳遞到Directive0
的函數體authorized
甚至在請求被拒絕時執行?
(道歉,如果這是一個重複,我沒能在其他地方在這裏找到一個類似的問題,但溫和關閉這個問題,如果你能找到一個)
此外,對於它的價值,我開了一個同樣的問題在他們的GitHub問題頁面:https://github.com/spray/spray/issues/1084 – rkoval