【发布时间】:2020-02-18 17:33:18
【问题描述】:
我正在为 Web API 设置授权。 API 将同时接收来自 m2m 应用程序的 post/put 请求,以及来自前端应用程序的 get/post/put 请求。
我知道我可以使用范围来限制这些应用程序接收的访问权限,但我不知道如何实现它。
我已经制作了我需要的范围,但我如何实际检查范围,然后基于此授予对 GET/POST 等的访问权限?
如果这是一个愚蠢的问题,我深表歉意。我才编程一年。
【问题讨论】:
我正在为 Web API 设置授权。 API 将同时接收来自 m2m 应用程序的 post/put 请求,以及来自前端应用程序的 get/post/put 请求。
我知道我可以使用范围来限制这些应用程序接收的访问权限,但我不知道如何实现它。
我已经制作了我需要的范围,但我如何实际检查范围,然后基于此授予对 GET/POST 等的访问权限?
如果这是一个愚蠢的问题,我深表歉意。我才编程一年。
【问题讨论】:
您应该阅读或查看基于角色的授权 (https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles?view=aspnetcore-3.1) - 请注意,Microsoft Docs 的 URL 适用于 DotNet Core 3.1 版
如果配置正确,您可以在要指定范围的方法之上使用注释:
[Authorize(Roles = "Administrator")]
public class AdministrationController : Controller
{
}
或
[Authorize(Roles = "Administrator, PowerUser")]
public class ControlPanelController : Controller
{
public ActionResult SetTime()
{
}
[Authorize(Roles = "Administrator")]
public ActionResult ShutDown()
{
}
}
然后您可以为您的 M2M 应用程序创建一个角色,并允许该应用程序仅使用特定方法,并且使用您的前端的用户可以拥有其他角色。正如您在第二个示例中看到的那样,您可以在控制器本身上设置授权角色,然后在您的方法中缩小范围。
【讨论】: