第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決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寫一個自定義的授權(quán)過濾器。我需要向類中注入一個用戶服務(wù),但是我不知道該怎么做。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進(jìn)行依賴項注入。我不想使用“工廠”或“服務(wù)定位器”模式。我的綁定在global.acsx中看起來像這樣:    internal class SiteModule : NinjectModule    {        public override void Load()        {            Bind<IUserService>().To<UserService>();        }    }
查看完整描述

4 回答

?
米脂

TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊

如果要使用構(gòu)造函數(shù)注入,則需要創(chuàng)建一個屬性和一個過濾器。


///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

{


}

嗯...


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

TA貢獻(xiàn)1815條經(jīng)驗 獲得超10個贊

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


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

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


查看完整回答
反對 回復(fù) 2019-12-16
  • 4 回答
  • 0 關(guān)注
  • 587 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號