Asp.net mvc 3, ninject 2.0 ve ninject mvc 3 eklentisini kullanıyorum.Bir yetkilendirme filtresine hizmetleri enjekte etmek için nasıl kullanılır?
Hizmet katmanları filtremde nasıl alabilirim (bu durumda bir yetkilendirme filtresi?).
Yapıcıyı enjekte etmeyi seviyorum, bu mümkün mü ya da mülke enjekte etmek zorunda mıyım?
Ben 2.2 Ninject yükseltilmiş ve nihayet got olsun
Teşekkür
Düzenleme
Ben mülkiyet inject için bu var ama benim özelliği her zaman
[Inject]
public IAccountService AccountServiceHelper { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// check if context is set
if (httpContext == null)
{
throw new ArgumentNullException("httpContext");
}
// check if user is authenticated
if (httpContext.User.Identity.IsAuthenticated == true)
{
// stuff here
return true;
}
return false;
}
/// <summary>
/// Application_Start
/// </summary>
protected void Application_Start()
{
// Hook our DI stuff when application starts
IKernel kernel = SetupDependencyInjection();
RegisterMaps.Register();
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
public IKernel SetupDependencyInjection()
{
IKernel kernel = CreateKernel();
// Tell ASP.NET MVC 3 to use our Ninject DI Container
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
return kernel;
}
protected IKernel CreateKernel()
{
var modules = new INinjectModule[]
{
new NhibernateModule(),
new ServiceModule(),
new RepoModule()
};
return new StandardKernel(modules);
}
public class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IAccountService>().To<AccountService>();
}
}
Düzenleme null iş.
Düzenleme 2
denemek ve benim authorize filtresi için yapıcı bir yol yapacağım ama Roller geçmek nasıl emin değilim. Sanırım bunu ninject aracılığıyla yapmak zorundayım?
Düzenleme 3
Bu defa
public class MyAuthorizeAttribute : AuthorizeAttribute
{
private readonly IAccountService accountService;
public MyAuthorizeAttribute(IAccountService accountService)
{
this.accountService = accountService;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return base.AuthorizeCore(httpContext);
}
}
this.BindFilter<MyAuthorizeAttribute>(FilterScope.Controller, 0)
.WhenControllerHas<MyAuthorizeAttribute>();
[MyAuthorize]
public class MyController : BaseController
{
}
O istemek bana söyler bir hayır parametre yapıcı olduğunu ne var. Yani bir şey eksik olmalıyım.
@Darin Dimitrov - Ben mülkiyet Inject çalışacağız sanırım. Onunla problem yaşıyorum. Gönderiyi güncelleyeceğim. – chobo2
@ chobo2, sahip olduğunuz iki olasılık hakkında verdiğim örneklere göz atın. –
@Darin Dimitrov- Bunu okuyordum -> http://www.planetgeek.ch/2010/11/13/official-ninject-mvc-extension-gets-support-for-mvc3/ geriye dönük uyumluluk olduğu için enjekte edilir ve gelecekte değiştirilir sanırım. Seçenek 1 ile gidersem, öznitelik etiketi denetleyicilere/eylem yöntemlerine nasıl bakar. Mülkle devam edersem, neye sahip olduğumu görünce eksik olan neyim var, ama mülküm boş. Bağlama çalışmalarını biliyorum çünkü yapıcıda ciltlemeyi kullanıyorum ve boş değil. – chobo2