gpt4 book ai didi

validation - .NET Web API 2 OWIN Bearer Token Authentication 直接调用

转载 作者:行者123 更新时间:2023-12-04 08:57:39 26 4
gpt4 key购买 nike

我的 Web Api 项目有问题。
我有文件存储在我的数据库中,想直接在新窗口中调用它们来查看/保存(URL 像:/api/Files/5 - 5 beeing the FileId)

我可以使用 Bearer Token 处理我使用 AngularJS 处理普通数据的一般 AJAX 请求,并且它的工作原理非常棒。对于文件,我创建了一个 Controller ,该 Controller 在浏览器中使用相应的 MIME 类型显示文件。但是现在我将操作更改为 [Authorize] 我得到一个访问被拒绝,这是正确的,因为我没有在 HTTP-Header 中传递 access_token。

如果可以通过查询字符串传递 token ,我做了很多研究,但没有发现任何有用的东西。

现在我的计划是从我的 Controller 中删除 [Authorize] 属性并尝试自己验证 token ,但我不知道如何。

有谁知道我怎样才能让它工作?

最佳答案

我在我的应用程序(AngularJS、WebAPI 2)中实现了不记名 token 身份验证,我遇到了类似的问题 - 我需要允许通过单击链接来下载文件。当您单击链接时,不会发送 header 。 :(
因此,我在查询字符串中发送了 token 值以下载文件

.../mywebapp/api/files/getfile/3?access_token=jaCOTrGsaak6Sk0CpPc1...

并将“授权” header 设置为 Startup.Auth.cs 中的 token 值。这是代码:

public void ConfigureAuth(IAppBuilder app)
{
//It needs for file downloads
app.Use(async (context, next) =>
{
if (context.Request.QueryString.HasValue)
{
if (string.IsNullOrWhiteSpace(context.Request.Headers.Get("Authorization")))
{
var queryString = HttpUtility.ParseQueryString(context.Request.QueryString.Value);
string token = queryString.Get("access_token");

if (!string.IsNullOrWhiteSpace(token))
{
context.Request.Headers.Add("Authorization", new[] { string.Format("Bearer {0}", token) });
}
}
}

await next.Invoke();
});
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
}

关于validation - .NET Web API 2 OWIN Bearer Token Authentication 直接调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com