2017-05-04 64 views
0

TL; DR版本
我在我的Cordova AngularJS應用程序中遇到了一種情況,我需要打開瀏覽器併發出請求。但是我發現我無法在這個請購單上發送標題,只是因爲$ window不接受它們。但我可以通過URL發送。
如何驗證通過Web API上的URL接收到的令牌?如何驗證通過URL發送的Web Api 2 Owin Token?

我建立一個應用程序科爾多瓦使用AngularJs和ngCordova詳細版本。在過去的幾天裏,我試圖下載一個PDF文件,並保留給用戶使用,所以他可以隨時閱讀。但我所能達到的是在後臺使用CordovaFileTransfer下載(沒有Android下載管理器)並通過文件瀏覽器應用程序訪問它(因爲該文件沒有出現在傳統的下載文件夾/應用程序中),這對我不利(我會很樂意接受有關這方面的任何話題)。

所以我決定嘗試另一個aproach。使用CordovaInAppBrowser我成功下載了我的文件,但只有沒有任何授權令牌,因爲插件不支持任何頭文件。

如果我可以在URL上發送有效的令牌,CordovaInAppBrowser將工作得很好。但我不知道如何在Web Api上手動驗證它。我找到了那兩個有關這方面信息的網頁,但我沒有理解它在我的應用程序上使用。

Retrieving bearer tokens from alternative locations in Katana/OWIN
Passing the access token on the URL

有人能指出我在正確的方向?

回答

1

無論你想從頭部還是從URL查詢字符串中提取你的令牌,原理都是一樣的;您需要從您的請求中提取數據以驗證令牌。

我已經使用了兩種方法,具體取決於你想要在哪裏做到這一點。

第一種方法是創建自定義屬性,方法是覆蓋AuthorizeAttribute甚至純ActionFilterAttribute。關於這個話題有很多資源,但你可以找到一些信息herehere。如果您不想在所有API方法和API控制器上執行此操作,則此方法非常有用。你只需簡單地把你的自定義屬性放在你想要的地方。

第二種方法是創建一個自定義OWIN中間件Herehere你可以找到很多關於如何做到這一點的資源。這種方法更集中,因爲所有的API調用都會通過它。