亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Asp.net MVC的具有Ninject和Filter屬性的依賴注入

Asp.net MVC的具有Ninject和Filter屬性的依賴注入

大話西游666 2019-12-16 11:12:39
Asp.net MVC的具有Ninject和Filter屬性的依賴注入我正在為asp.net mvc 3寫一個自定義的授權過濾器。我需要向類中注入一個用戶服務,但是我不知道該怎么做。public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter{    private IUserService userService;    private string[] roles;    public AuthorizeAttribute(params string[] roles)    {        this.roles = roles;    }    public void OnAuthorization(AuthorizationContext filterContext)    {        throw new NotImplementedException();    }}我正在使用ninject進行依賴項注入。我不想使用“工廠”或“服務定位器”模式。我的綁定在global.acsx中看起來像這樣:    internal class SiteModule : NinjectModule    {        public override void Load()        {            Bind<IUserService>().To<UserService>();        }    }
查看完整描述

4 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

如果要使用構造函數注入,則需要創建一個屬性和一個過濾器。


///marker attribute

public class MyAuthorizeAttribute : FilterAttribute { }


//filter

public class MyAuthorizeFilter : IAuthorizationFilter

{

      private readonly IUserService _userService;

      public MyAuthorizeFilter(IUserService userService)

      {

          _userService = userService;

      }


      public void OnAuthorization(AuthorizationContext filterContext)

      {

          var validUser = _userService.CheckIsValid();


          if (!validUser)

          {

              filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "action", "AccessDenied" }, { "controller", "Error" } });

          }

      }

}

捆綁:


this.BindFilter<MyAuthorizeFilter>(System.Web.Mvc.FilterScope.Controller, 0).WhenControllerHas<MyAuthorizeAttribute>();

控制器:


[MyAuthorizeAttribute]

public class YourController : Controller

{


}

嗯...


查看完整回答
反對 回復 2019-12-16
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

我為Ninject無法處理構造的任何情況找到了一個簡單的解決方案:


var session = (IMyUserService)DependencyResolver.Current.GetService(typeof (IMyUserService));

實際上,這正是我與自定義AuthorizeAttribute一起使用的內容。比必須實現單獨的FilterAttribute容易得多。


查看完整回答
反對 回復 2019-12-16
  • 4 回答
  • 0 關注
  • 581 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號