0

驗證我實現,在我的ASP.NET MVC 3項目的IOC容器窗體身份驗證的問題。我們已將用戶信息存儲在數據庫中,並具有許多自定義屬性。MVC 3個表單與IOC容器

我有註冊資格,爲發展目的IOC容器我的用戶定義的接口。該接口被賦予每個控制器,因此控制器具有當前的用戶信息。

此人直到我在Application_Start

去除僞用戶登記工作正常我收到此錯誤: 當前類型,... CurrentUserInformation.IUserInformation,是一個接口,並且不能構成。你是否缺少類型映射?

我不想因爲我覺得這是不是最好的做法與虛擬用戶對象的工作。

sombody能幫我還是有更好的方式來做到這一點自定義的認證?

編輯添加一些代碼

BaseController

public class BaseController : Controller 
{ 
    private readonly IUserInformation _userInformation; 
    public BaseController(IUserInformation userInformation) 
    { 
     _userInformation = userInformation 
    } 
} 

引導程序初始化從的Application_Start

稱爲
public static void Initialise() 
{ 
    var container = BuildUnityContainer(); 
    DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 
} 

private static IUnityContainer BuildUnityContainer() 
{ 
    var container = new UnityContainer(); 

    //register all services en repositories 

    //here i put my dummy user wich i want to remove 
    container.RegisterInstance<IUserInformation>(
    new UserInformation 
    { 
     UserId = 1, 
     ... 
    }); 


    return container; 
} 
+1

你使用哪個容器? – Steven

+0

IUnityContainer –

+1

你能告訴你的代碼?你是如何配置容器的?你的對象和控制器是怎樣的? –

回答

0

您可以使用InjectionFactory:

container.RegisterType<IUserInformation, UserInformation>(

    // User information is destroyed when the request ends. 
    // You could use an HttpSessionLifetimeManager as well, if it fits your needs 
    new HttpRequestLifetimeManager(), 


    new InjectionFactory(container => { 
      UserInformation userInfo = // TODO: build your userInformation from custom authentication 
      return userInfo; 
    }));