【发布时间】:2018-09-14 12:05:53
【问题描述】:
我已经实现了ClaimRequirementFilter,但是注入/参数处理不起作用。 AuthorizationFilter 的构造函数被调用了两次。 MyClaim 对象(参数)Name 属性在第一次调用期间为空,在第二次调用中被填充。 OnAuthorization 只调用一次,使用空值。
MyClaimAttribute.cs
public class MyClaimAttribute : TypeFilterAttribute
{
public MyClaimAttribute(string claimName) : base(typeof(AuthorizationFilter))
{
MyClaim claim = new MyClaim
{
Name = claimName
};
Arguments = new object[] { claim };
}
}
AuthorizationFilter.cs
public AuthorizationFilter(MyClaim claim)
{
_claim = claim;
}
Startup.cs
services.AddTransient<MyClaim>();
services.AddMvc(options => options.Filters.Add(typeof(AuthorizationFilter)));
控制器方法装饰为:[MyClaim("CanDoSomething")]
更新 1:
删除“services.AddMvc”行解决了这个问题,但我想为每个操作执行它。如果其中一个方法没有被修饰,用户不应该被授权。
【问题讨论】:
标签: c# .net asp.net-core authorization