2017-05-04 68 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调用都会通过它。

相关问题