允许在未经授权的情况下访问单个 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的博客,大家可以参考一下,了解应用服务的认证/授权。
我确定我可能遗漏了一些相当基本的东西,但是有没有办法让 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的博客,大家可以参考一下,了解应用服务的认证/授权。