允许在未经授权的情况下访问单个 API?

Allow access to single API without Authorization?

我确定我可能遗漏了一些相当基本的东西,但是有没有办法让 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 移动应用程序。我确实希望其他一切都需要授权,而且那部分工作正常。我只想公开这部分而不需要用户登录。

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

对于匿名访问,您需要为所有操作从 RebuildLocalDatabaseCheckController class 中删除 Authorize 或为指定操作指定 AllowAnonymous。有关 Azure 移动应用程序项目中自定义 API 的更多详细信息,您可以参考 Adrian Hall 的书 here.

此外,如果您的应用程序已部署到 Azure 移动应用程序,为了允许匿名反对您的自定义 API,您需要禁用 App Service Authentication 或启用它允许匿名请求(无操作),如下所示:

另外,这里有一篇关于Architecture of Azure App Service Authentication / Authorization的博客,大家可以参考一下,了解应用服务的认证/授权。