.NET Core 授权模型:需要来自请求的上下文的策略
Posted
技术标签:
【中文标题】.NET Core 授权模型:需要来自请求的上下文的策略【英文标题】:.NET Core Authorization Model: Policies that require context from the request 【发布时间】:2017-05-30 18:57:12 【问题描述】:我刚刚开始研究 .NET Core 安全模型。它似乎比以前的模型好得多(我真的很喜欢这个政策理念,角色非常有限 IMO)但文档似乎并没有涵盖我想做的事情......我希望我d like to do是可能的,但我不知道是不是。
我正在构建一个应用程序,用户可以在其中创建“组织”,并邀请其他用户加入。反之,用户也可以申请加入组织。
组织是应用程序的中心概念;几乎所有活动都是以组织为中心的,我想建立一个策略,在收到请求后,将验证当前用户是否有权访问他或她作为成员请求的组织资源。我会在每个请求中包含一个组织 ID。
我看到的问题是,似乎没有任何方法可以让策略“了解”请求的上下文,以便它可以检查组织 ID 并验证用户是成员那个组织的。是否存在这样的机制,或者政策概念不适合这种方法?
【问题讨论】:
【参考方案1】:您可以使用 IHttpContextAccessor,将其注入您想要的任何位置并使用它来获取上下文。
在您的 Startup.cs 中:
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
和注入:
public class CustomClass
private readonly IHttpContextAccessor _contextAccessor;
public CustomClass(IHttpContextAccessor contextAccessor)
_contextAccessor = contextAccessor;
【讨论】:
看起来 HttpContext 已经可以通过 context.Resource 获得了。问题是,这似乎发生在任何模型绑定或验证之前。呃,这和 AuthorizationActionFilters 一样丑陋。以上是关于.NET Core 授权模型:需要来自请求的上下文的策略的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core Web API,如果角色或策略匹配,则授权操作
经验分享在ASP.NET Core中,如果禁用某个请求的模型验证?