允许在没有授权的情况下访问单个API?

时间:2017-06-14 17:03:59

标签: azure azure-mobile-services

我确定我可能遗漏了一些相当基本的东西,但有没有办法让ApiController在没有授权的情况下被访问?删除[Authorize]或添加[AllowAnonymous]似乎无济于事。

namespace Backend.Controllers
{
    [MobileAppController, Authorize]
    public class RebuildLocalDatabaseCheckController : ApiController
    {
        [HttpGet, Route("api/LastLocalDatabaseRebuildRequest")]
        [AllowAnonymous]
        public JToken Get()
        {
            return JToken.FromObject(DateTimeOffset.Now);
        }
    }
}

这适用于我为UWP应用设置的Azure移动应用。我确实希望其他一切都需要授权,而且那部分工作正常。我只想暴露这部分而无需用户登录。

1 个答案:

答案 0 :(得分:2)

我已在本地检查了您的代码,它可以按预期工作。

enter image description here enter image description here

对于匿名访问,您需要从Authorize类中移除RebuildLocalDatabaseCheckController以执行所有操作,或为指定的操作指定AllowAnonymous。有关azure移动应用项目中自定义API的更多详细信息,请参阅adrian hall的书here

此外,如果您的应用已部署到azure移动应用,为了允许匿名对您的自定义API,您需要禁用应用服务身份验证或通过允许匿名请求启用它(否)行动)如下:

enter image description here

此外,这里有一篇关于Architecture of Azure App Service Authentication / Authorization的博客,您可以参考它来更好地了解应用服务认证/授权。