fle*_*xit 5 c# asp.net authorization httpcontext asp.net-core-mvc
嗨,我想将参数传递给asp.net核心中的自定义策略。据我所知,我只能做
[Authorize(Policy="Over21")]
My Action(){
}
Run Code Online (Sandbox Code Playgroud)
但我想做
[Authorize(Policy="Over21",Para="AnotherValue")]
My Action(){
}
Run Code Online (Sandbox Code Playgroud)
所以我决定扩展Authorize属性,然后执行此操作。
public class MyAuthorizationAttribute : AuthorizeAttribute
{
public string Permission;
public MyAuthorizationAttribute(string policy, string permission)
: base(policy)
{
Permission = permission;
}
}
Run Code Online (Sandbox Code Playgroud)
然后做这个
[MyAuthorization("MyPolicy","CanDoPermission")]
My Action(){
}
Run Code Online (Sandbox Code Playgroud)
调试时仍会调用自定义授权处理程序,因此现在我想要一种从中获取权限属性的方法AuthorizationHandlerContext context。我意识到在调试过程中向下钻取时可以找到此属性
context->Resource->Filters
Run Code Online (Sandbox Code Playgroud)
在此列表中,我找到了AuthorizeFilter类型的所有对象,并进一步深入AuthorizeData->Resultview到此列表中还包含MyAuthorization对象。我使用首次登台工具执行此操作,但我不知道如何获取适用于所调用特定操作的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;
}
Run Code Online (Sandbox Code Playgroud)
不知道下一步如何获得此对象。我希望有一种从上下文中获取这些值的简便方法。