gpt4 book ai didi

asp.net-mvc-3 - Ninject 自定义 AuthorizeAttribute 注入(inject)不起作用

转载 作者:行者123 更新时间:2023-12-04 05:59:21 26 4
gpt4 key购买 nike

我遇到了一些障碍,希望有人能指出我哪里出错了。

我一直在使用 Ninject 注入(inject)自定义 ActionFilterAttributes ,这工作正常:

kernel.BindFilter<CriticalErrorAttribute>(FilterScope.Last, 1);

我现在正在尝试注入(inject)自定义 AuthorizeAttribute。我的语法正确,因此我插入了 Role 和自定义属性:
kernel.BindFilter<Authorisation>(FilterScope.Action, 0)
.WhenActionMethodHas<Authorisation>()
.WithPropertyValueFromActionAttribute<Authorisation>("Roles", n => n.Roles)
.WithPropertyValueFromActionAttribute<Authorisation>("Years", n => n.Years);

该属性正在正确执行并且角色和年份被正确插入,我的问题是我试图注入(inject)的服务始终为空:
[Inject]
public IUserServices userService { get; set; }

在正常的 ActionFilterAttributes 中,服务被很好地注入(inject),但这里不是。

任何帮助,将不胜感激

最佳答案

而不是从属性派生,您应该实现相应的接口(interface),例如IAuthorizationFilterIActionFilter并使用不同的普通属性来标记要应用该过滤器的 Controller 或操作

public class AuthorisationFilter : IAuthorizationFilter ....
public class Authorization : Attribute ....

kernel.BindFilter<AuthorisationFilter>(FilterScope.Action, 0)
.WhenActionMethodHas<Authorisation>()
.WithPropertyValueFromActionAttribute<Authorisation>("Roles", n => n.Roles)
.WithPropertyValueFromActionAttribute<Authorisation>("Years", n => n.Years);

关于asp.net-mvc-3 - Ninject 自定义 AuthorizeAttribute 注入(inject)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com