CodeGo.net>如何使用ASP.NET Web API与ASP.NET身份跨源?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了CodeGo.net>如何使用ASP.NET Web API与ASP.NET身份跨源?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2790字,纯文字阅读大概需要4分钟。
内容图文
![CodeGo.net>如何使用ASP.NET Web API与ASP.NET身份跨源?](/upload/InfoBanner/zyjiaocheng/670/f7fb3b51869d488ea814770c2171ba64.jpg)
我尝试了许多方法,但是没有在asp.net Web API中使用跨域.
I’m trying to call from my domain mydomain.com to search.mydomain.com but
it is not allowing as cross-origin is not allowed.
如何在我的网站中启用跨域?
任何帮助将不胜感激.
解决方法:
这是一篇关于跨域实现的很好的文章:
https://askgif.com/blog/298/how-to-use-asp-net-web-api-cross-origin-with-asp-net-identity/
ASP.NET Web API是.NET系列的绝妙组成部分(肯定有些怪异,因为我们现在拥有使用几乎相同方法的MVC和Web API,但是ASP.NET MVC 6即将来临:)).但是,启用SPA或移动混合(Ionic!)应用并不是最令人愉快的体验.
允许跨域请求
因此,如果您尝试在未进行任何设置的情况下访问API,则会发现飞行前OPTIONS请求失败.之所以发生这种情况,是因为浏览器要在请求之前发送请求,以确保允许您发出请求.
首先,我们需要一些软件包.撰写本文时,我分别具有3.0.1和5.0.0版本.
Install-Package Microsoft.Owin.Cors
Install-Package Microsoft.AspNet.Cors
其次,找到/AppStart/Startup.Auth.cs并更新ConfigureAuth方法以包括UseCors方法,如下所示:
public void ConfigureAuth(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
// creates owin contexts and stuff
}
这将允许您从其他服务器发出请求.
设置注册和登录请求
注册用户
要请求创建用户,您需要将以下JSON发送到/ api / account / register(如果使用的是默认的身份路由):
var registrationData = {
UserName: userName,
Password: password,
ConfirmPassword: confirmPassword
};
登录用户
要请求登录用户,您想使用以下JSON将以下JSON发送到/ token:
var loginData = {
UserName: userName,
Password: password,
grant_type: password
};
这似乎有点奇怪.我们没有TokenController!打什么呢?好吧,如果您返回到/App_Start/Startup.Auth.cs文件,则会看到以下内容:
// Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
此代码配置/ token响应.
使用[授权]发送对API端点的请求
当您请求登录时,响应中将收到一个“ access_token”.您需要保持此值不变,并将其作为“授权”标头发送,就像这样(如果您使用的是Angular):
$http.defaults.headers.common['Authorization'] = "Bearer " + authentication.access_token;
现在,您所有的请求都将通过此Authorization标头发送,因此,当Identity对请求进行身份验证时,它将把您的静态User对象设置为您的用户!
全部做完!
这是实现API跨域和认证请求的工作流程.您将点击/ token URL以获取承载令牌,并将其添加到随后所有需要授权的请求中.
使用AngularJS?
如果您使用的是Angular或Ionic框架,我会发布一个Gist,其中提供了上述一些用于注册,登录和提出授权请求的工作流程.但请注意–这并不完美.您可能需要进行一些清理.如果您这样做,请告诉我.同时,我将尝试将其重构为漂亮的东西.
内容总结
以上是互联网集市为您收集整理的CodeGo.net>如何使用ASP.NET Web API与ASP.NET身份跨源?全部内容,希望文章能够帮你解决CodeGo.net>如何使用ASP.NET Web API与ASP.NET身份跨源?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。