首页 文章

仅对某些控制器使用OAuth承载令牌

提问于
浏览
2

使用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 回答

  • 0

    我最近一直在和Oauth玩,并且有一个不同的场景,我需要[allowAnonymous]到API中的某些控制器,同时拒绝匿名我的项目的其余部分 .

    我不知道这是否会对你的情况有所帮助,但我想我会分享以防它有用 .

    将以下内容添加到每个控制器的API的Web.config中,我需要allowAnonymous来解决我的场景 .

    </system.codedom>
      <location path="api/controller">
        <system.web>
          <authorization>
            <allow users="?"/>
          </authorization>
        </system.web>
      </location>
    </configuration>
    

相关问题