C# 将值传递给自定义授权策略ASP.net Core
您好,我想将参数传递给asp.net core中的自定义策略。据我所知,到目前为止,我只能这样做C# 将值传递给自定义授权策略ASP.net Core,c#,asp.net,authorization,asp.net-core-mvc,httpcontext,C#,Asp.net,Authorization,Asp.net Core Mvc,Httpcontext,您好,我想将参数传递给asp.net core中的自定义策略。据我所知,到目前为止,我只能这样做 [Authorize(Policy="Over21")] My Action(){ } 但我想这样做 [Authorize(Policy="Over21",Para="AnotherValue")] My Action(){ } 所以我决定扩展Authorize属性,然后执行此操作 public class MyAuthorizationAttribute : AuthorizeAttr
[Authorize(Policy="Over21")]
My Action(){
}
但我想这样做
[Authorize(Policy="Over21",Para="AnotherValue")]
My Action(){
}
所以我决定扩展Authorize属性,然后执行此操作
public class MyAuthorizationAttribute : AuthorizeAttribute
{
public string Permission;
public MyAuthorizationAttribute(string policy, string permission)
: base(policy)
{
Permission = permission;
}
}
那就这样做吧
[MyAuthorization("MyPolicy","CanDoPermission")]
My Action(){
}
调试时仍会调用自定义授权处理程序,因此现在我需要一种从AuthorizationHandlerContext
获取权限属性的方法。我意识到,在调试期间向下钻取时可以找到此属性
context->Resource->Filters
在这个列表中,我找到了AuthorizeFilter类型的所有对象,并进一步深入到AuthorizeData->Resultview
这也是一个包含我的授权对象的列表。我使用一个初次登场的工具来做这件事,但我不知道如何获得适用于被调用的特定操作的MyAuthorization实例
这是我得到的最远的距离
var mvcContext = context.Resource as AuthorizationFilterContext;
foreach (var filterMetadata in mvcContext.Filters)
{
if (filterMetadata.GetType().Name != "AuthorizeFilter") continue;
var claimAttribute = filterMetadata as AuthorizeFilter;
if (claimAttribute != null)
{
var data = claimAttribute.AuthorizeData;
}
我不确定下一步如何获取此对象。我希望有一种更简单的方法从上下文中获取这些值。这方面运气好吗?