使用OAuth允许访问Web API . 我有这样的东西(来自各种教程,例如:http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/):
public void ConfigureOAuth(IAppBuilder app, System.Web.Mvc.IDependencyResolver kernel)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider(),
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
在 Startup.cs
. 但是这会为我的所有控制器全局启用授权 . 有没有办法只为一个控制器(或少数几个控制器或方法)打开它?我对网站的其他部分有自定义授权,我可以进入它们,只是检查传递的凭据是否是持有人令牌并拒绝它,但我更优雅的解决方案 .
1 回答
我最近一直在和Oauth玩,并且有一个不同的场景,我需要[allowAnonymous]到API中的某些控制器,同时拒绝匿名我的项目的其余部分 .
我不知道这是否会对你的情况有所帮助,但我想我会分享以防它有用 .
将以下内容添加到每个控制器的API的Web.config中,我需要allowAnonymous来解决我的场景 .