簡體   English   中英

如何在Spring的資源抽象中使用基本身份驗證

[英]How to use Basic Authentication with Spring's Resource abstraction

我在服務器上有一個文件,可通過Https進行訪問,我想使用Spring的Resource抽象訪問該文件。 我希望Spring解析資源並將其注入到我的Bean的構造函數中,如下所示:

public class MyClass {

    public MyClass(
            @Value("https://myserver.com/myfile") Resource resource) {
        // do something using the resource
    }
}

問題是我無法弄清楚如何將用於基本身份驗證的用戶名和密碼包含到此模式中。 我嘗試了“普通”風格

@Value("https://username:password@myserver.com/myfile")

但似乎無法正確理解。 服務器以HTTP狀態401-未授權進行響應。 我復制了字符串,並使用wget執行了相同的查詢,並且該查詢有效。 因此,我的憑據沒有問題,但很可能與用於定義資源的語法有關。

在Spring中是否有有效的語法,還是我必須以另一種方式手動設置Authentication標頭來獲取配置?

感覺不對 ,如果您不是這樣的話,我會更喜歡...但是您可以依靠@Value注入屬性值。 注意這里使用@Autowired

@Component
public class MyClass {
    private String resourceUrl;

    @Autowired
    public MyClass(@Value(${external.resource.url}) String resourceUrl) {
        this.resourceUrl = resourceUrl;
    }
    // The rest of your code
}

然后,您可以在屬性external.resource.url放入您喜歡的任何值...包括帶有用戶名和密碼的完整URL。

我想提醒您,這可能不是一件好事,因為您希望能夠將URL,用戶名和密碼作為單獨的內容注入到您的應用程序中。 這給你如何可以與一個組件完成它的想法,雖然我強烈建議您拆分這件事,而不是(不管你做什么, 檢查屬性文件中使用這些值到你的源代碼控制),我離開將其分解為更多價值的機械部分,作為讀者的練習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM